Kubernetes “如何调试”;ImagePullBackOff";?

Kubernetes “如何调试”;ImagePullBackOff";?,kubernetes,openshift,openshift-origin,Kubernetes,Openshift,Openshift Origin,突然之间,我无法部署一些以前可以部署的映像。我获得了以下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 R

突然之间,我无法部署一些以前可以部署的映像。我获得了以下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 
应用程序无法启动。吊舱没有试图运行容器。从事件页面中,我得到了
后退拉图像“172.30.84.25:5000/默认值/arix@sha256:d326
。我已验证我可以使用
docker pull
拉取带有标签的图像

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


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

您是否尝试过编辑以查看错误(我的图像位置错误)

甚至删除你的吊舱

kubectl delete arix-3-yjq9w
您可以使用“描述pod”语法

对于OpenShift的使用:

oc describe pod <pod-id>  
kubectl describe pod <pod-id>  
oc delete pod <pod-id>
oc get pods
oc get pod <new-pod-id>
kubectl delete pod <pod-id>  
kubectl get pods
kubectl get pod <new-pod-id>
香草苦艾酒:

oc describe pod <pod-id>  
kubectl describe pod <pod-id>  
oc delete pod <pod-id>
oc get pods
oc get pod <new-pod-id>
kubectl delete pod <pod-id>  
kubectl get pods
kubectl get pod <new-pod-id>
其他调试步骤

  • 尝试在计算机上手动拖动docker图像和标记
  • 通过执行“kubectl/oc get pods-o wide”来识别节点
  • ssh进入无法拉入docker映像的节点(如果可以)
  • 检查节点是否可以通过执行ping来解析docker注册表的DNS
  • 尝试在节点上手动拉取docker映像
  • 如果您使用的是私有注册表,请检查您的密码是否存在,以及密码是否正确。您的密码也应位于同一命名空间中。谢谢
  • 某些注册表具有限制ip地址访问的防火墙。防火墙可能会阻止请求
  • 某些CI使用临时docker机密创建部署。因此,该机密在几天后过期(您要求的是生产故障…)
  • 运行docker登录

    将图像推送到docker hub

    重建吊舱


    这为我解决了问题。希望能有所帮助。

    我忘记将标记为1.0.8的图像推送到ECR(AWS图像中心)。。。 如果您使用头盔并通过以下方式升级:

    舵手升级minta用户。/src/services/user/helm图表

    确保将values.yaml内的图像标记推入(ECR或Docker Hub等),例如:(这是我的头盔图表/values.yaml)


    您需要确保图像:1.0.8已被推送!

    我遇到了类似的问题,但不是一个问题,而是我的所有播客都未就绪,并且显示就绪状态0/1 差不多

    我尝试了很多方法,但最后我发现上下文设置不正确。 请使用以下命令并确保您处于正确的上下文中


    在GKE上,kubectl配置获取上下文,如果pod已死亡,最好检查事件。 它将更详细地显示错误的原因

    就我而言,我有:

    Failed to pull image "gcr.io/project/imagename@sha256:c8e91af54fc17faa1c49e2a05def5cbabf8f0a67fc558eb6cbca138061a8400a":
     rpc error: code = Unknown desc = error pulling image configuration: unknown blob
    
    结果是图像不知怎么被破坏了。 在重新验证它并使用新的散列进行部署后,它再次工作

    [更新]在回顾中,我认为图像被损坏是因为承载图像的GCP中的bucket上设置了清理策略,基本上删除了图像。因此,上述消息可以在事件中看到

    其他常见问题是名称错误(gcr.io vs eu.gcr.io),也可能是无法以某种方式访问注册表。同样,事件中有提示,那里的消息应该足以告诉您

    更多一般信息可在此处找到(如身份验证):


    我遇到了类似的情况,事实证明,随着Docker Desktop的实施,我被注销,并且在我重新登录后,所有工作都恢复正常。

    我在GKE上遇到了这个问题,原因是Docker没有证书

    运行此命令可以解决此问题:

    gcloud auth configure-docker
    
    运行以下命令: 估价$(minikube-p minikube码头环境)

    现在构建您的图像。然后在K8S中使用相同的图像。
    每次打开新命令时都要执行此操作。

    1。
    kubectl get pod-n kube system

    2.显示从kube系统吊舱中拉出的图像

    3.
    kubectl删除吊舱-n kube系统
    (重新启动吊舱并重新创建容器)

    4.
    kubectl获得吊舱-n


    享受它。

    这是一个多机设置吗?如果是,请验证您可以从所有节点拉取。如果不是,请打开节点上的日志记录到--loglevel=5并重新启动-您应该看到打印的信息,描述尝试拉取映像的情况以及包含的任何错误。使用loglevel=5重新启动后出现了什么?您解决了问题吗?有人能解释一下吗n本期“ImagePullBackOff”?(图像存在于我的“docker图像”中)我的repo使用了错误的区域。我忘了添加eu.to--image=eu.gcr.io/$PROJECT\u ID/…在我的例子中,传递的图像的标签名是错误的。我更改了标签名,解决了这个问题。另外,如果您使用私有图像存储库,请确保您的图像提取机密存在,没有输入错误,并且它们位于正确的位置如果是私有图像存储库,请确保使用“imagePullSecrets”引用pod中的图像提取机密还有一篇很长的博客文章描述了如何对此进行深入的调试:这些说明已经过时了——kubernetes不再提供关于imagepullbackoff@KirkSefchik,我想我明白了你为什么看不到详细信息。我已经更新了我的答案,谢谢。您的上下文只控制您连接到的集群。这个答案是不正确的。