k8s calico

网络通讯机制
k8s中的网络首要涉及到pod的的各种拜访需求,好像一pod的内部(单容器或许多容器)通讯、pod A与pod B的通
信、从外部网络拜访pod以及从pod拜访外部网络。
k8s的网络根据第三方插件完成,可是界说了一些插件兼容标准,该标准有CoreOS和Google联合定制,叫做
CNI(Container Network Interface)。
现在常用的的CNI网络插件有calico和flannel:


  • 一.calico:

calico是一个纯三层的网络解决方案,为容器供给多node间的拜访通讯,calico将每一个node节点都当做为一个路
由器(router),各节点经过BGP(Border Gateway Protocol) 鸿沟网关协议学习并在node节点生成路由规矩,然后
将不同node节点上的pod衔接起来进行通讯。

BGP是一个去中心化的协议,它经过主动学习和保护路由完成网络的可用性,可是并不是一切的网络都支撑
BGP,别的为了跨网络完成更大规划的网络办理,calico 还支撑IP-in-IP的叠加模型,简称IPIP,IPIP能够完成跨不
同网段树立路由通讯,可是会存在安全性问题,其在内核内置,能够经过Calico的配置文件设置是否启用IPIP,在
公司内部假如k8s的node节点没有跨过网段主张封闭IPIP。

k8s calico


  1. calico主动生成路由,如图根据BGP协议,生成了许多静态路由,图中cali最初的便是本机的虚拟网卡,tunl0为跨主机通讯用网卡,衔接本机POD的网络,calicao默许生成的网络子网划分为掩码26

k8s calico

  1. 跨主机pod通讯,从node结点192.168.7.110,ping node结点192.168.7.111中的pod172.31.13.139

k8s calico

k8s calico
k8s calico

  1. 从111上的pod172.31.13.139,traceroute110上的pod172.31.58.98

k8s calico
去往139的报文会经过tunl0转发,但终究都要经过eth0发出去
calico彻底根据静态路由完成报文转发,功能很高,不然还得找交换机找路由
从139过来的路由也会经由tunl0转发,tunl0是开了ip-ip才有的,能够关掉

k8s calico
关了ipip之后,就没有tunl0那个网卡了,去往172.31.58.64,直接经过eth0过去了
这儿封闭ipip之后,从头生成的测验pod,所以每个ip都变化了

测验:从110node上的pod172.31.58.64,测验路由到111node上的pod172.31.13.129,成果便是,直接从eth0跳到了111的eth0,再到pod