I think you just need to provide a flat networking infrastructure where all nodes get their own IP and can reach each other. So you can swap flannel for project calico or your own setup if you like.
[Disclosure - I'm part of the Project Calico team.]
Full disclosure: I work at Google on Kubernetes