《Kubernetes部署篇:calico两种网络模式》

文章目录

  • 一、calico概述
  • 二、IPIP与BGP两种网络模式对比
  • 三、calicoctl客户端工具安装
  • 四、calico修改网络模式为BGP
  • 五、calico修改网络模式为混合模式
  • 六、bgp三种互联方案
  • 总结:整理不易,如果对你有帮助,可否点赞关注一下?


一、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

方法二:

[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集群运维实战

你可能感兴趣的:(《企业级K8s集群运维实战》,kubernetes,网络,python)