ITPub博客

首页 > 应用开发 > IT综合 > kubernetes实践之二十:网络原理

kubernetes实践之二十:网络原理

原创 IT综合 作者:百联达 时间:2018-04-22 17:07:51 1 删除 编辑
一:体系结构图


二:说明

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路由等数据转发方式。

1. 数据从源容器中发出后,经由所在主机的docker0虚拟网卡转发到flannel0虚拟网卡,这是个P2P的虚拟网卡,flanneld服务监听在网卡的另外一端。

2.Flannel通过Etcd服务维护了一张节点间的路由表。

3. 源主机的flanneld服务将原本的数据内容UDP封装后根据自己的路由表投递给目的节点的flanneld服务,数据到达以后被解包,然后直接进入目的节点的flannel0虚拟网卡,然后被转发到目的主机的docker0虚拟网卡,最后就像本机容器通信一下的有docker0路由到达目标容器。

9.Calico架构

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/28624388/viewspace-2153186/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
15年以上互联网经验,先后从事过制造业,证券业,物业行业和物流行业信息系统和互联网产品的设计落地实施,8年系统架构经验。最近关注企业数字化转型、财务数字化服务共享、大语言模型、Kubernetes微服务架构和Istio微服务治理框架。

注册时间:2013-02-05

  • 博文量
    332
  • 访问量
    1265614