1. 基本的概念

       Kubernetes的网络模型假定了所有Pod都在一个可以直接连通的扁平的网络空间中,这在GCE (Google Compute Engine)里面是现成的网络模型,Kubernetes假定这个网络已经存在。而在私有云里搭建Kubernetes集群,就不能假定这个网络已经存在了。我们需要自己实现这个网络假设,将不同节点上的Docker容器之间的互相访问先打通,然后运行Kubernetes。三层网络结构如下:

kubernates学习笔记【3】:网络通讯方式

 

2. 同一个pod内的多个容器

      同一个pod,会共享网络栈,走的是同一张网卡,通过localhost就可以访问。

 

3.  各个pod之间的通讯

      (1)在同一机器:由Docker0网桥直接转发,不需要Flannel。

       (2)不在同一机器:

            Overlay NetworkFlannel是Core0S团队针对 Kubernetes设计的一个网络规划服务, 简单来说,它的功能是让集群中的不同节点主机创建的Docker 容器都具有全集群唯一的虚拟IP地址。而且它还能在这些IP地址之间建立一个覆盖网络(Overlay Network),通过这个覆盖网络,将数据包原封不动地传递到目标容器内

     kubernates学习笔记【3】:网络通讯方式

kubernates学习笔记【3】:网络通讯方式 

 

4. pod与service之间的通讯

     各节点的Iptables规则。基于性能考虑,都是为IPtables维护和转发。最新是IOS转发

 

5. pod到外网

     Pod向外网发送请求,查找路由表,转发数据包到宿主机的网卡,宿主网卡完成路由选择后,iptables执行Masquerade,把源IP更改为宿主网卡的IP, 然后向外网服务 器发送请求。

 

6. 外网访问pod

     service

 

 

相关文章: