Pending
應用長時間處於 Pending 狀態時,也可以按照這個辦法查看鏡像的下載進度。
安裝 Kubernetes 過程中,或者向 Kubernetes 部署應用的過程中,有可能會碰到 ImagePullBackoff 的問題。例如執行命令:
kubectl get pods -n kube-system
結果如下:
NAME READY STATUS RESTARTS AGE
coredns-94d74667-6dj45 1/1 ImagePullBackOff 0 12m
coredns-94d74667-xv6wd 1/1 Pending 0 12m
etcd-master 1/1 Running 0 13m
kube-apiserver-master 1/1 Running 0 13m
kube-controller-manager-master 1/1 Running 0 12m
kube-flannel-ds-amd64-4wjcl 1/1 Running 0 12m
kube-flannel-ds-amd64-9k28h 1/1 Running 0 12m
kube-flannel-ds-amd64-pwkv5 1/1 Running 0 12m
kube-proxy-qd6w7 1/1 Running 0 12m
kube-scheduler-master 1/1 Running 0 12m
碰到這個問題時,可按如下步驟解決:
1.確定問題 Pod 所在節點,以 kube-system 名稱空間下的 Pod coredns-94d74667-6dj45 為例
kubectl get pods coredns-94d74667-6dj45 -n kube-system -o wide
輸出結果如下所示:
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
coredns-94d74667-6dj45 1/1 Running 2 39d 10.244.0.40 master <none> <none>
從這個就結果中,我們得知,該 Pod 被調度到了 master 節點
2.確定 Pod 所使用的容器鏡像
kubectl get pods coredns-94d74667-6dj45 -n kube-system -o yaml | grep image:
輸出結果如下所示:
image: registry.aliyuncs.com/google_containers/coredns:1.3.1
image: registry.aliyuncs.com/google_containers/coredns:1.3.1
從這個結果中,我們得知,該 Pod 使用到了容器鏡像 registry.aliyuncs.com/google_containers/coredns:1.3.1
3.在 Pod 所在節點執行 docker pull 指令
docker pull registry.aliyuncs.com/google_containers/coredns:1.3.1
如果鏡像標簽沒有問題,docker 指令將顯示該鏡像的下載過程,耐心等待即可。如果不能抓取 docker 鏡像,請參考 Docker 命令的輸出提示,做對應的處理。