LoongArch64 (loong64) 龙芯架构:Kubernetes 初始化网络 calico 3.26.1

下载 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 ~]#