突然之间,我无法部署一些以前可以部署的图像。我得到了以下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 pulling image "172.30.84.25:5000/default/arix@sha256:d326
。我已经确认我可以使用docker pull
标记来提取图片。
我还检查了最后一个容器的日志。由于某种原因它被关闭了。我认为pod应该至少尝试重新启动它。
我已经没有想法来调试这些问题。我还可以查看更多内容?
答案 0 :(得分:46)
您可以使用' describe pod '语法
对于OpenShift使用:
oc describe pod <pod-id>
对于vanilla Kubernetes:
kubectl describe pod <pod-id>
检查输出的事件。 在我的情况下,它显示 Back-off pull image coredns / coredns:latest
在这种情况下,图像coredns / coredns:latest不能从互联网上提取。
Events:
FirstSeen LastSeen Count From SubObjectPath Type Reason Message
--------- -------- ----- ---- ------------- -------- ------ -------
5m 5m 1 {default-scheduler } Normal Scheduled Successfully assigned coredns-4224169331-9nhxj to 192.168.122.190
5m 1m 4 {kubelet 192.168.122.190} spec.containers{coredns} Normal Pulling pulling image "coredns/coredns:latest"
4m 26s 4 {kubelet 192.168.122.190} spec.containers{coredns} Warning Failed Failed to pull image "coredns/coredns:latest": Network timed out while trying to connect to https://index.docker.io/v1/repositories/coredns/coredns/images. You may want to check your internet connection or if you are behind a proxy.
4m 26s 4 {kubelet 192.168.122.190} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "coredns" with ErrImagePull: "Network timed out while trying to connect to https://index.docker.io/v1/repositories/coredns/coredns/images. You may want to check your Internet connection or if you are behind a proxy."
4m 2s 7 {kubelet 192.168.122.190} spec.containers{coredns} Normal BackOff Back-off pulling image "coredns/coredns:latest"
4m 2s 7 {kubelet 192.168.122.190} Warning FailedSync Error syncing pod, skipping: failed to "StartContainer" for "coredns" with ImagePullBackOff: "Back-off pulling image \"coredns/coredns:latest\""
额外的调试步骤
答案 1 :(得分:2)
您是否尝试过编辑以查看错误(我的图像位置错误)
kubectl edit pods arix-3-yjq9w
甚至删除你的pod?
kubectl delete arix-3-yjq9w
答案 2 :(得分:2)
我遇到了类似的情况,结果证明在实现 Docker Desktop 后,我退出了,重新登录后一切正常。
答案 3 :(得分:1)
我在 GKE 上遇到了这个问题,原因是没有 docker 凭据。
运行它解决了它:
gcloud auth configure-docker
答案 4 :(得分:0)
我忘了将标记为1.0.8的图像推送到ECR(AWS图像中心)... 如果您使用的是Helm并通过以下方式升级:
helm升级minta-user ./src/services/user/helm-chart
例如,确保将values.yaml中的图像标签推送到(到ECR或Docker Hub等):(这是我的helm-chart / values.yaml)
replicaCount: 1
image:
repository:dkr.ecr.us-east-1.amazonaws.com/minta-user
tag: 1.0.8
您需要确保图像1..0.8被按下!
答案 5 :(得分:0)
我遇到了类似的问题,但不是所有的吊舱都未准备好,而是显示就绪状态0/1 就像是
我尝试了很多事情,但最后我发现上下文设置不正确。 请使用以下命令,并确保您处于正确的上下文中
kubectl配置获取上下文
答案 6 :(得分:0)
在GKE上,如果吊舱已死,则最好检查事件。 它将更详细地显示错误的原因。
就我而言,我有:
Failed to pull image "gcr.io/project/imagename@sha256:c8e91af54fc17faa1c49e2a05def5cbabf8f0a67fc558eb6cbca138061a8400a":
rpc error: code = Unknown desc = error pulling image configuration: unknown blob
事实证明图像被某种程度损坏。 重新推送并使用新的哈希进行部署后,它又可以工作了。
答案 7 :(得分:0)
运行以下命令: eval $(minikube -p minikube docker-env)
现在构建您的图像。然后在 K8S 中使用相同的图像。 每次打开新 CMD 时都这样做。
答案 8 :(得分:0)
1. type value from to
0 VALUE 93.5 2020-12-01T00:00:00.000+01 2020-12-01T00:00:01.000+01
1 VALUE 75 2020-12-01T00:00:01.000+01 2020-12-01T00:05:01.000+01
2 WARNING NaN 2020-12-01T00:00:01.000+01 2020-12-01T00:05:01.000+01
2.显示哪些 ImagePullBackOff kube-system pods
3.kubectl get pod -n kube-system
(重启 pod 并重新创建容器)
4.kubectl delete pod <POD NAME> -n kube-system
享受吧。
答案 9 :(得分:0)
就我而言,使用 Fargate 配置文件时,我的 VPC 中的网络配置不正确。 Fargate 容器需要访问 ECR,这需要一条通往公共互联网的路由。我的私有子网的 NAT 网关位于相同的私有子网中,而它们本应位于公共子网中。在我的案例中,此错误消息是错误配置的结果。
答案 10 :(得分:-8)
运行docker登录
将图像推送到docker hub
重新创建广告连播
这为我解决了问题。希望对您有所帮助。