kubectl describe pod coredns-545d6fc579-s9g5s -n kube-system
找到原因1:CoreDNS Pod 處于 Pending 狀態的原因是集群中的節點都帶有 node.kubernetes.io/not-ready 污點?
journalctl -u kubelet -f
14:57:59.178592 3553 remote_image.go:114] "PullImage from image service failed" err="rpc error: code = Unknown desc = error pulling image configuration: download failed after attempts=6: dial tcp 4.78.139.50:443: connect: connection refused" image="docker.io/calico/cni:v3.25.0"
找到原因2:Kubelet 在嘗試從 docker.io 拉取 Calico 的 CNI 鏡像時失敗,連接被拒絕
查看calico.yaml中所需要的鏡像,發現都是從docker hub中拉取的,目前由于政策原因,只能更換加速器
[root@k8s-master ~]# grep image calico.yaml | sort | uniq image: docker.io/calico/cni:v3.25.0image: docker.io/calico/kube-controllers:v3.25.0image: docker.io/calico/node:v3.25.0imagePullPolicy: IfNotPresent
解決操作1:添加加速器?
cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://b9pmyelo.mirror.aliyuncs.com","https://dockerpull.com","https://docker.aityp.com/"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
之后重新拉取calico鏡像
kubectl delete -f calico.yaml
kubectl apply -f calico.yaml
kubectl get pods -n kube-system?
calico-node-dzq28 ? ? ? ? ? ? ? ? ? ? ? ? ?0/1 ? ? Init:0/3 ? 0 ? ? ? ? ?5m40s
calico-node-vsnwj ? ? ? ? ? ? ? ? ? ? ? ? ?0/1 ? ? Init:0/3 ? 0 ? ? ? ? ?5m40s
找到原因3:可以看出有兩個clico節點pod尚未初始化成功
kubectl describe pod calico-node-dzq28 -n kube-system
找到原因4:?根據 kubectl describe
的輸出,顯示 kubelet
一直在嘗試拉取 docker.io/calico/cni:v3.25.0
鏡像,但沒有成功完成拉取。這通常意味著節點無法從 Docker 倉庫拉取鏡像。
解決操作2:前面只更換了master節點中docker的操作,故節點還是無法拉取鏡像,只需給節點添加相應鏡像
添加后,重啟docker,在重新執行操作1,所有pod都是runnning