前言

宿主机上运行的容器通过Linux内核的Namespace机制进行网络隔离;

想要了解K8s网络,其本质上是需要了解容器间网络相互访问原理;

关于容器和容器之间如何通信的原理,需要分2种情况进行剖析:

  • 在同1宿主机内的容器间,通信过程?
  • 在不同宿主机内的容器间,如何跨节点进行通信?

不通宿主机上容器间通信主要使用2种方式

  • 报文封装:在3层网络报文之上再封装1层虚拟报文,使用隧道进行报文传输,例如VXLAN、GRE等
  • 动态技术:动态更新路由表信息,动态控制下一跳IP地址实现,例如BGP

在K8s集群中使用SDN技术实现以上2种方式各有优劣:

  • 报文封装:对原报文进行2次封装,2次封装和解封装效率低下、报文体积增大;
  • 动态路由:CNI插件无权配置、修改真实路由器设备上的路由信息,导致容器间通信(Overlay网络)受限于同1网段的Underlay网络;

一、Flannel

Flannel 由CoreOS开发,用于解决Docker集群跨主机通讯的覆盖网络(overlay network);

它的主要思路是:预先留出1个网段,每个主机使用其中1部分,然后每个容器被分配不同的IP;

所有的容器认为大家在同一个直连的网络,底层通过UDP/VxLAN/Host-GW等进行报文的封装和转发。

二、Calico

Calico是1个基于BGP协议的网络互联解决方案;

Calico是1个纯3层的SDN解决方案即CNI插件,使用路由来实现报文寻址和传输

相比Flannel, ovs等SDN解决方案,Calico 避免了层叠网络带来的性能损耗。

  • 将Node节点当做Router
  • 将位于Node节点上的Container当做Router的直连设备
  • 利用Kernel 来实现高效的路由转发。

Node节点间的路由信息通过BGP协议在整个Calico网络中传播。

Calico具有以下特点:

  • 在Calico 中的数据包不需要进行封包和解封。
  • 基于三层网络通信,troubleshoot 会更方便。
  • 网络安全策略使用 ACL 定义,基于 iptables 实现,比起 overlay 方案中的复杂机制更只管和容易操作。

三、Calico工作模式

1.BGP模式

在BGP模式下:Colico将运行容器的节点做为虚拟路由器通过BGP生成动态路由,来实现集群内,运行在不同宿主机上的容器 间的网络访问

[root@master ~]# route -n #BGP模式
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 ens33
10.244.104.0 192.168.0.112 255.255.255.192 UG 0 0 0 ens33
10.244.166.128 192.168.0.111 255.255.255.192 UG 0 0 0 ens33
...
[root@master home]# route -n #IPIP模式
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 ens33
10.244.104.0 192.168.0.112 255.255.255.192 UG 0 0 0 tunl0
10.244.166.128 192.168.0.111 255.255.255.192 UG 0 0 0 tunl0

在BGP模式下,报文直接通过Node节点的网卡转发到目标机Node节点上,不会进行2次IP报文的封装;

因此从性能上来看,BGP肯定是占优的,但是也正是没有对报文进行2次封包,BGP模式只能在同1个子网内使用,无法跨网段

2.IPIP模式

IPIP模式主要指的是在Kubernetes环境中,通过Calico网络策略实现的IP-in-IP隧道模式。

在这种模式下,Calico通过创1一个虚拟的隧道设备(如tunl0),将源容器的数据包封装后通过宿主机发送出去。

这种模式允许数据包在不同子网之间的POD之间传输,而不需要通过路由连接

由于IPIP模式需要对报文进行二次的封装和解封,效率不高

3.混合模式

Calico-ipip模式和Calico-bgp模式都有对应的局限性,最终Calico的Corss-subnet模式兼顾了以上2种模式的优点,完美胜出

在同子网内进行网络访问时,使用BGP模式,在跨子网网络访问时,使用IPIP模式。

 

参考

posted on 2024-07-17 21:28  Martin8866  阅读(2)  评论(0编辑  收藏  举报