在部署pod出现了一直停在了ImagePullBackOff
或者其它情况
先查看日志,只有先查看了日志,才能知道为什么会出现这种问题。
比如我出现的问题ImagePullBackOff
查看对应pod的日志
kubectl describe pod openebs-ndm-qxcns -n openebs
这里查看对应pod的日志, openebs-ndm-qxcns
是 pod的名称
查看日志的时候我出现过两种问题现象
第一种
一直卡在拉取镜像
如果等待的时间久了,可能就会出现
fail to pull image "quay.io/openebs/provisioner-localpv:1.5.0"
等类似的问题。
解决办法:
先找到下载pod失败的服务器是哪台(因为我已经解决问题了,所以这里我的pods都是running状态)
kubectl get pods --all-namespaces -o wide
这里的node对应的就是服务器的名称,找到下载pod失败的服务器之后,登录到对应的服务器上。然后手动拉取对应镜像下来
docker pull quay.io/openebs/provisioner-localpv:1.5.0
等待镜像下载成功。
回到master节点的服务器,把对应的pod删掉(k8s会自动重新拉起一个pod)
kubectl delete pod openebs-ndm-qxcns -n openebs
这里openebs-ndm-qxcns
对应的是pod的name。
再次进入对应pod的日志会看到如下信息。
这里的意思是说,机器上已经有该镜像了。等待pod加载成功,那么状态会变成running状态。
第二种情况
第二种情况是镜像已经下载成功,但是查看日志的时候发现卡在了这里
Back-off restarting failed container
这里显示的是重启容器失败,我采用的办法是把该pod删掉,然后等待k8s重新拉起一个pod就解决了。
使用docker下载的问题
在使用docker拉取镜像的时候可能会遇到两个问题
第一个就是无法拉取到镜像,显示各种error,网络问题,此时修改一下虚拟机的dns
vi /etc/resolv.conf
修改为如下(119.29.29.29是腾讯的dns,也可以使用114.114.114.114这种较为经典的dns)
再次尝试下载对应的镜像。
第二个问题
如果用docker下载的时候是遇到卡住的问题的话,例如一直显示
v1.17.3: Pulling from google_containers/kube-proxy
597de8ba0c30: Already exists
3f0663684f29: Pulling fs layer
卡住不动的情况下,重新启动一下docker即可解决问题
systemctl restart docker
搭建k8s时候下载的镜像也比较多,出现问题的pod也比较多,但是通过日志排查的方法,还是将pod一一部署完成了。以下是pods成功跑起来的示例图。