下载 calico manifests
curl -LO https://raw.githubusercontent.com/projectcalico/calico/refs/tags/v3.26.1/manifests/calico.yaml
修改 calico manifests 网卡名称
interface_name=$(ip route get 223.5.5.5 | grep -oP '(?<=dev\s)\w+' | head -n 1)
echo $interface_name
sed -i '/k8s,bgp/a \ - name: IP_AUTODETECTION_METHOD\n value: "interface=INTERFACE_NAME"' calico.yaml
sed -i "s#INTERFACE_NAME#$interface_name#g" calico.yaml
查看修改结果
cat calico.yaml | grep IP_AUTODETECTION_METHOD
cat calico.yaml | grep interface=
修改 calico manifests Docker 镜像
sed -i "s#docker.io/calico/cni:v#lcr.loongnix.cn/calico/cni:#" calico.yaml
sed -i "s#docker.io/calico/node:v#lcr.loongnix.cn/calico/node:#" calico.yaml
sed -i "s#docker.io/calico/kube-controllers:v#lcr.loongnix.cn/calico/kube-controllers:#" calico.yaml
使用 calico manifests
kubectl apply -f calico.yaml
等待 calico 创建完成
while true; do
pod_status=$(kubectl get pods --all-namespaces -o jsonpath="{range .items[*]}{.status.phase}{'\n'}{end}" | sort | uniq);
echo $pod_status
if echo "$pod_status" | grep -q "Pending"; then
echo '等待 pod 运行';
sleep 5;
else
break;
fi
done
calico 创建完成效果
查看 pod
kubectl get pod -A -o wide
[root@anolis ~]# kubectl get pod -A -o wide
NAMESPACE NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
kube-system calico-kube-controllers-5fffd98f7d-cqhdw 1/1 Running 0 21m 172.16.231.193 k8s-1 <none> <none>
kube-system calico-node-ztfnd 1/1 Running 0 3m10s 192.168.103.23 k8s-1 <none> <none>
kube-system coredns-7d9c65d499-mgtqz 1/1 Running 0 29h 172.16.231.195 k8s-1 <none> <none>
kube-system coredns-7d9c65d499-x6294 1/1 Running 0 29h 172.16.231.194 k8s-1 <none> <none>
kube-system etcd-k8s-1 1/1 Running 1 (12h ago) 29h 192.168.103.23 k8s-1 <none> <none>
kube-system kube-apiserver-k8s-1 1/1 Running 1 (12h ago) 29h 192.168.103.23 k8s-1 <none> <none>
kube-system kube-controller-manager-k8s-1 1/1 Running 1 (12h ago) 29h 192.168.103.23 k8s-1 <none> <none>
kube-system kube-proxy-4shfb 1/1 Running 1 (12h ago) 29h 192.168.103.23 k8s-1 <none> <none>
kube-system kube-scheduler-k8s-1 1/1 Running 1 (12h ago) 29h 192.168.103.23 k8s-1 <none> <none>
[root@anolis ~]#
查看节点
kubectl get node -o wide
[root@anolis ~]# kubectl get node -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
k8s-1 Ready control-plane 29h v1.30.1 192.168.103.23 <none> Anolis OS 23.4 6.6.102-5.3.3.an23.loongarch64 containerd://2.3.1
[root@anolis ~]#