一、前言
k8s的网络组件可以使用flannel或者calico两种,flannel的配置比较简单,但是性能还是calico会更高一点,所以现在来介绍以下calico网络组件的部署
二、部署
k8s集群版本对calico的版本也有对应要求,k8s 1.23.0版本要求对应calico v3.24.0左右的版本
我这里的是1.23.10版本的k8s,calico使用v3.24.6版本
在github上下载对应版本的calico.yaml文件,calico.yaml文件也是每个版本都有区别的
参考:https://github.com/projectcalico/calico/tree/v3.24.6/manifests
创建存放calico yaml文件目录
mkdir /opt/calico && cd /opt/calico
编辑calico yaml文件配置
vi calico.yaml
#在大概4551行的位置编辑以下配置
4551 - name: CALICO_IPV4POOL_CIDR
4552 value: "10.244.0.0/16" #填写为配置k8s集群时,设置的pod网络地址段
4553 - name: IP_AUTODETECTION_METHOD
4554 value: "interface=ens192" #宿主机的网卡信息,这项配置是要手动加入的,calico原本没有
#在大概4521行的位置编辑以下配置
4521 # Enable IPIP
4522 - name: CALICO_IPV4POOL_IPIP
4523 value: "Never" #默认配置为Always,配置为Always时使用的时IPIP模式,更改为Never时使用的是bgp模式,使用bgp模式性能更高
创建calico服务
kubectl apply -f calico.yaml
查看是否创建完成
kubectl get pod -n kube-system
查看bgp模式是否生效
route -n
当显示的是实际网卡时说明为bgp模式,默认的IPIP模式是显示的TUNL虚拟的隧道协议