calico模式

发布时间 2023-03-28 15:02:19作者: 滴滴滴

一、calico概述
1、k8s网络之Calico网络
2、k8s网络组件calico详解
3、calico的组件、架构与原理
4、calico的两种网络模式BGP和IP-IP性能分析

二、IPIP与BGP两种网络模式对比
IPIP网络

流量:tunl0设备封装数据,形成隧道,承载流量
适用网络类型:适用于互相访问的Pod不在同一个网段中,跨网段访问的场景,外层封装的IP能够解决跨网段的路由问题。
效率:流量需要tunl0设备封装,效率略低

BGP网络:

流量:使用路由信息导向流量
使用网络类型:适用于互相访问的Pod在同一个网段。
效率:原生hostgw,效率高

三、calicoctl客户端工具安装
《Kubernetes部署篇:calicoctl客户端工具安装》

四、calico修改网络模式为BGP
IPIP:ipip是在宿主机网络不完全支持bgp时,一种妥协的overlay机制,在宿主机创建1个”tunl0”虚拟端口;设置为false时,路由即纯bgp模式,理论上ipip模式的网络传输性能低于纯bgp模式;设置为true时,又分ipip always模式(纯ipip模式)与ipip cross-subnet模式(ipip-bgp混合模式),后者指“同子网内路由采用bgp,跨子网路由采用ipip”。

说明:本文calico.yaml文件基于3.20.0

#修改calico.yaml文件,添加内容如下
# Enable BGP
- name: CALICO_IPV4POOL_IPIP
value: "Never"
- name: IP_AUTODETECTION_METHOD
value: "interface=ens.*"

如下图所示:

相比IPIP模式,BGP模式下不需要tunl0设备参与报文传输,我们从路由表信息就能看出差别,如下所示:

#1、IPIP模式
[root@k8s-master-13 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 ens33
10.244.17.0 192.168.1.15 255.255.255.192 UG 0 0 0 tunl0
10.244.27.0 192.168.1.21 255.255.255.192 UG 0 0 0 tunl0
10.244.115.0 192.168.1.16 255.255.255.192 UG 0 0 0 tunl0
10.244.170.128 192.168.1.14 255.255.255.192 UG 0 0 0 tunl0
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33

#2、BGP模式
[root@localhost install-kubernetes]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 ens33
10.244.17.0 192.168.1.15 255.255.255.192 UG 0 0 0 ens33
10.244.27.0 192.168.1.21 255.255.255.192 UG 0 0 0 ens33
10.244.115.0 192.168.1.16 255.255.255.192 UG 0 0 0 ens33
10.244.170.128 192.168.1.14 255.255.255.192 UG 0 0 0 ens33
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33

如上可见,在BGP模式下,报文直接通过ens33转发到目标机器上,不会进行二次ip报文的封装,因此从性能上来看,BGP肯定是占优势的。但是由于没有二次封包,BGP模式只能在同一个子网内使用,无法跨网段使用。

五、calico修改网络模式为混合模式
IPIP:ipip是在宿主机网络不完全支持bgp时,一种妥协的overlay机制,在宿主机创建1个”tunl0”虚拟端口;设置为false时,路由即纯bgp模式,理论上ipip模式的网络传输性能低于纯bgp模式;设置为true时,又分ipip always模式(纯ipip模式)与ipip cross-subnet模式(ipip-bgp混合模式),后者指“同子网内路由采用bgp,跨子网路由采用ipip”。

方法一:

[root@k8s-master-13 ~]# kubectl patch ippool default-ipv4-ippool -p '{"spec":{"ipipMode": "CrossSubnet"}}' --type=merge
1
方法二:

[root@k8s-master-13 ~]# kubectl edit ippool
ipipMode: Always修改为ipipMode: CrossSubnet

六、bgp三种互联方案
Calico三种类型的BGP互联方案

Calico给出了三种类型的 BGP 互联方案,分别是 Full-mesh、Route reflectors和Top of Rack (ToR)

Full-mesh模式对于100个以内的工作节点或更少节点的中小规模部署非常有用,但是在较大的规模上,Full-mesh模式效率会降低,较大规模情况下,Calico官方建议使用Route reflectors。

总结:整理不易,如果对你有帮助,可否点赞关注一下?
更多详细内容请参考:企业级K8s集群运维实战
————————————————
版权声明:本文为CSDN博主「东城绝神」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_37814112/article/details/121748352