一、背景介绍
前面一章我们介绍了Node节点上面不同的容器之间的通讯方式,主要是根据docker0(网桥)+Veth Pair的方式来玩起来的。
本章我们来介绍下不同Node节点上面不同的容器之间的通讯方式,我们不妨想一想,如果不同Node节点上面的容器能够共享一个网桥的话,不就跟同一个Node节点上面的通讯方式一样了吗。
其实K8S确实是按照这个思路来玩的,不过这里引入了一个新概念Overlay Network(覆盖网络):通过软件构建一个覆盖在已有宿主机网络之上的、可以把所有容器连通在一起的虚拟网络。
如此以来,这个Overlay Network就需要解决两个问题:
1.Node1节点上面的容器1发送的消息如何正确的发到正确的Node节点?
2.收到这个消息的Node节点如何将这个消息正确的转发给对应的容器上面?
二、通讯过程介绍
K8S解决容器间的网络通讯方案,采用的是CoreOS公司提供的Flannel项目,该项目的实现方式有下面三种,我们会一一介绍。
1. UDP方式,是最早支持的一种方案,最简单也最直接,不过性能也是最差的,目前已经被废弃&#