小编给大家分享一下kubernetes中网络原理的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
一:体系结构图
二:说明
1.网络命名空间
处于不同命名空间的网络栈是完全隔离的,彼此之间无法通信,就好像两个“平行宇宙”,通过对这种网络资源的隔离,就能在一个宿主机上虚拟多个不同的网络环境。
2.网络命名空间的通信,Veth设备对
引入Veth设备对是为了在不同的网络命名空间之间进行通信,利用它可以直接将两个网络命名空间连接起来。由于要连接两个网络命名空间,所以Veth设备都是成对出现的,很像一对以太网网卡,并且中间有一根直连的网线。
3.网桥
Linux内核通过一个虚拟的网桥设备来实现以太网口(Veth)之间的桥接。
4.Docker的网络实现
Docker Daemon第一次启动时会创建一个虚拟的网桥,默认的名字是docker0,在私有网络空间中给这个网桥分配一个子网。
针对由Docker创建出来的每一个容器,都会创建一个虚拟的Veth设备对,其中一端关联到网桥上,另一端使用Linux的网络命名空间技术,映射到容器内的eth0设备,然后从docker0网桥的地址段内给eth0接口分配一个IP地址
5.kubernetes容器之间通信
Pod内的容器共享一个网络命名空间,共享一个Linux协议栈,可以用localhost地址访问彼此的端口
6.kubernetes同一Node的Pod间通信
同一Node中Pod的默认路由都是docker0的地址,由于它们关联在同一个docker0网桥上,地址网段相同,所有它们之间应当是能直接通信的。
7.kubernetes不同Node的Pod间通信
不同Node中Pod间通信要满足2个条件: Pod的IP不能冲突; 将Pod的IP和所在的Node的IP关联起来,通过这个关联让Pod可以互相访问。
8.Flannel工作原理
Flannel实质上是一种“覆盖网络(overlay network)”,也就是将TCP数据包装在另一种网络包里面进行路由转发和通信,目前已经支持UDP、VxLAN、AWS VPC和GCE路由等数据转发方式。
数据从源容器中发出后,经由所在主机的docker0虚拟网卡转发到flannel0虚拟网卡,这是个P2P的虚拟网卡,flanneld服务监听在网卡的另外一端。
Flannel通过Etcd服务维护了一张节点间的路由表。
源主机的flanneld服务将原本的数据内容UDP封装后根据自己的路由表投递给目的节点的flanneld服务,数据到达以后被解包,然后直接进入目的节点的flannel0虚拟网卡,然后被转发到目的主机的docker0虚拟网卡,最后就像本机容器通信一下的有docker0路由到达目标容器。
9.Calico架构
以上是“kubernetes中网络原理的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注编程网行业资讯频道!