本文发布于Cylon的收藏册,转载请著名原文链接~
开始前的实验环境
Resources | controller | worker-1 | worker-2 |
---|---|---|---|
OS | CentOS 7.9 | CentOS 7.9 | CentOS 7.9 |
Storage | 20GB | 20GB | 20GB |
vCPU | 2 | 2 | 2 |
RAM | 4GB | 4GB | 4GB |
NIC | 10.0.0.4 | 10.0.0.4 | 10.0.0.4 |
Kubernetes Version | 1.19.10 | 1.19.10 | 1.19.10 |
选择匹配 Kubernetes 版本的 Calico 版本
通常情况下,查看 Calico 所支持的 Kubernetes 版本,可以通过路径 Install Calico ==> Kubernetes ==> System requirements 可以找到自己的 Kubernetes 集群所支持的 Calico 版本。
例如在实验环境中,Kubernetes 1.19 版本所支持的版本有 Calico 3.20,这个时候直接 apply 这个版本提供的资源清单即可
如何开启纯 BGP 模式
默认情况下下,Calico 使用的是 full mesh 和 IPIP, 如果想通过在部署时就修改关闭 IPIP 模式,可以通过修改资源清单中的环境变量来关闭 CALICO_IPV4POOL_IPIP: Never
。
如果需要在安装时配置Pod 的 CIDR,需要修改 CALICO_IPV4POOL_CIDR
如果你需要切换 CNI
如果你的集群不是空的,而是存在很多 Pod 的集群,请注意,这个时候你的 flannel 或者其他 CNI 生成的网络接口是不会被销毁的,Pod 的 IP也是旧 CNI 生成的网段,此时 Calico 会按照原有的 IP 进行维护路由,可能会存在访问不了的情况,这时候不要随意切换 CNI
如何检查 Calico 使用的是什么模式
在使用默认的资源清单安装完 Calico 后,实际上此时会表现为 BGP + IPIP 隧道模式,同节点 Pod 使用直连方式,跨节点 Pod 通讯使用 tunnel 隧道完成,表现形式为 ip addr
会看到 tunl0
设备
如果是纯 BGP 模式,那么表现形式为 route -n
看到的路由跨节点的都应该是 eth0
这样子的,如下所示
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.2 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.244.196.128 0.0.0.0 255.255.255.255 UH 0 0 0 calia5f3c234a97
10.244.196.128 0.0.0.0 255.255.255.192 U 0 0 0 *
10.244.214.0 10.0.0.4 255.255.255.192 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
当然此时一定是不存在 tunl0
设备的。
Reference
[2] BGP peer
[3] IP pool
本文发布于Cylon的收藏册,转载请著名原文链接~
链接:https://www.oomkill.com/2023/06/calico-cni-deplyment/
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」 许可协议进行许可。