gpt4 book ai didi

kubernetes - 如何调试 "ImagePullBackOff"?

转载 作者:行者123 更新时间:2023-12-03 05:14:41 34 4
gpt4 key购买 nike

突然间,我无法部署一些以前可以部署的镜像。我得到以下 Pod 状态:

[root@webdev2 origin]# oc get pods 
NAME READY STATUS RESTARTS AGE
arix-3-yjq9w 0/1 ImagePullBackOff 0 10m
docker-registry-2-vqstm 1/1 Running 0 2d
router-1-kvjxq 1/1 Running 0 2d

应用程序无法启动。 Pod 未尝试运行容器。从事件页面,我得到了 Back-off pull image "172.30.84.25:5000/default/arix@sha256:d326。我已经验证我可以使用 标签来拉取图像>docker拉动

我还检查了最后一个容器的日志。由于某种原因它被关闭了。我认为 Pod 至少应该尝试重新启动它。

我已经没有办法调试这些问题了。我还可以检查什么?

最佳答案

您可以使用“描述 pod”语法

对于 OpenShift 使用:

oc describe pod <pod-id>  

对于普通 Kubernetes:

kubectl describe pod <pod-id>  

检查输出的事件。在我的例子中,它显示后退拉图像 unreachableserver/nginx:1.14.22222

在这种情况下,无法从 Internet 提取镜像 unreachableserver/nginx:1.14.22222,因为没有 Docker 注册表 unreachableserver 且镜像 nginx:1.14.22222 > 不存在。

注意:如果您没有看到任何感兴趣的事件,并且 Pod 已处于“ImagePullBackOff”状态一段时间(似乎超过 60 分钟),则需要删除该 Pod 并查看来自新 Pod 的事件。

对于 OpenShift 使用:

oc delete pod <pod-id>
oc get pods
oc get pod <new-pod-id>

对于普通 Kubernetes:

kubectl delete pod <pod-id>  
kubectl get pods
kubectl get pod <new-pod-id>

示例输出:

  Type     Reason     Age                From               Message
---- ------ ---- ---- -------
Normal Scheduled 32s default-scheduler Successfully assigned rk/nginx-deployment-6c879b5f64-2xrmt to aks-agentpool-x
Normal Pulling 17s (x2 over 30s) kubelet Pulling image "unreachableserver/nginx:1.14.22222"
Warning Failed 16s (x2 over 29s) kubelet Failed to pull image "unreachableserver/nginx:1.14.22222": rpc error: code = Unknown desc = Error response from daemon: pull access denied for unreachableserver/nginx, repository does not exist or may require 'docker login': denied: requested access to the resource is denied
Warning Failed 16s (x2 over 29s) kubelet Error: ErrImagePull
Normal BackOff 5s (x2 over 28s) kubelet Back-off pulling image "unreachableserver/nginx:1.14.22222"
Warning Failed 5s (x2 over 28s) kubelet Error: ImagePullBackOff

其他调试步骤

  1. 尝试在计算机上手动拉取 docker 镜像和标签
  2. 通过执行“kubectl/oc get pods -o Wide”来识别节点
  3. ssh 到无法拉取 docker 镜像的节点(如果可以的话)
  4. 通过执行 ping 检查节点是否可以解析 Docker 注册表的 DNS。
  5. 尝试在节点上手动拉取docker镜像
  6. 如果您使用的是私有(private)注册表,请检查您的 secret存在并且 secret 是正确的。您的 secret 也应该位于同一 namespace 中。谢谢swenzel
  7. 某些注册管理机构设有限制 IP 地址访问的防火墙。防火墙可能会阻止拉取
  8. 一些 CI 使用临时 docker key 创建部署。所以 secret 会在几天后过期(您正在要求生产失败......)

关于kubernetes - 如何调试 "ImagePullBackOff"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34848422/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com