我的网站: https://pythoneers.cn
1. K8S网络模型
Kubernetes 的网络模型假定了所有Pod 都在一个可以直接连通的扁平的网络空间中,Kubernetes的扁平化是指所有的 Pod 都可以通过对方的 IP “直接到达”
(其实有很多转换机制,如Flannel)。这在GCE(Google Compute Engine)里面是现成的网络模型,Kubernetes 假定这个网络已经存在。而在私有云里搭建 Kubernetes 集群,就不能假定这个网络已经存在了
。我们需要自己实现这个网络假设,将不同节点上的Docker 容器之间的互相访问先打通,然后运行Kubernetes。Flannel可以实现这个扁平化的网络空间
。
第一种通信模式:同一个Pod的多个容器之间的访问通过 lo
。同一个Pod 内的多个容器公用pause容器的网络栈,这些容器之间的访问走的是这个网络栈的 IO,不需要网卡,通过 localhost 的方式访问。第二种通信模式:Pod 与Service 之间的通讯
。Pod 与Service 之间的通讯是通过各节点的Iptables 规则,最新版本中已经加入了LVS的机制来实现转换,转换效率会更高<