kubernetes 的网络模型是假定所有Pod都在一个可以直接联通的扁平网路空间。所以运行kubernetes需要先实现这个假定,将容器的互相访问打通。
同一个Pod多个容器通信
借助pause容器,Pod 中的容器共享其网络栈,即一个pod中的容器,处于一个”本地状态”,相互可见,部分资源互斥(端口)
各个Pod通信
同一主机下的pod通信
如图,同一主机下面的不同Pod 通过Docker0 网桥进行通信
跨主机下的Pod通信
- 每个Pod 会在etcd 中注册自己的服务信息,包括那
Flannel
为集群中不同节点主机上的docker容器具有全集群唯一的虚拟IP
Pod和service之间
各个节点的IPtables,新版本支持LVS做转发