安装 calico
k8s 本身不提供 pod 之间的网络,需要安装网络插件(CNI)让各节点上的 pod 互通 Calico 是常用网络插件之一,提供高性能网络(BGP/IPIP/VXLAN)和网络策略(NetworkPolicy)能力
安装 k8s 网络组件 - Calico
shell
# master:
wget https://raw.githubusercontent.com/projectcalico/calico/v3.32.1/manifests/calico.yaml
kubectl apply -f calico.yaml
# 在等待片刻后,可查看 nodes 状态,STATUS 将由 NotReady 变更为 Ready
kubectl get nodes无法拉取镜像
思路:在外网可访问的机器上拉取镜像并导出,拷贝到目标服务器后再导入 更完整的方案见 98_pull_images.md
查看镜像:
kubectl describe pod calico-node-xxxx -n kube-system得到镜像:
quay.io/calico/cni:v3.32.1,quay.io/calico/node:v3.32.1, 均需要同步找到一个 x86 又可拉取镜像的服务器:
docker pull docker.io/calico/node:v3.32.1导出镜像:
docker save -o node.v3.32.1.tar docker.io/calico/node:v3.32.1将镜像 scp 到目标服务器:
scp node.v3.32.1.tar root@k8s_host:/root导入镜像:
ctr -n=k8s.io images import node.v3.32.1.tar报错处理
Back-off restarting failed container upgrade-ipam in pod calico-node-xxxx: 从calico.yaml中移除 upgrade-ipam 相关内容Back-off restarting failed container install-cni in pod calico-node-xxxx: 从calico.yaml中移除 upgrade-ipam 相关内容
若开启了 firewalld, 可能会拦截 pod 到主机的流程,需要放行
shell
# 信任 cali+ 接口(通配符)
firewall-cmd --permanent --zone=trusted --add-interface='cali+'
# 信任 tunl0(如果使用 IPIP)
firewall-cmd --permanent --zone=trusted --add-interface=tunl0
# 信任 vxlan.calico(如果使用 VXLAN)
firewall-cmd --permanent --zone=trusted --add-interface=vxlan.calico
# 重载 firewall
firewall-cmd --reload
# 验证配置
firewall-cmd --zone=trusted --list-interfaces加速
若 Calico 初始化时间太长,可先导入镜像
shell
# 导入镜像(calico.tar.gz 替换为实际的镜像包文件名)
ctr -n=k8s.io images import calico.tar.gz
# 查看镜像
crictl imagesTips: 镜像包的获取,后面有需求再补充