如何在kubernetes Pods中重试图像拉?

时间:2016-10-26 09:58:46

标签: docker kubernetes coreos

我是kubernetes的新手。我在pod中有一个问题。当我运行命令

 kubectl get pods

结果:

NAME                   READY     STATUS             RESTARTS   AGE
mysql-apim-db-1viwg    1/1       Running            1          20h
mysql-govdb-qioee      1/1       Running            1          20h
mysql-userdb-l8q8c     1/1       Running            0          20h
wso2am-default-813fy   0/1       ImagePullBackOff   0          20h

由于" wso2am-default-813fy"节点,我需要重新启动它。有什么建议吗?

8 个答案:

答案 0 :(得分:198)

如果没有yaml文件:

kubectl get pod PODNAME -n NAMESPACE -o yaml | kubectl replace --force -f -

答案 1 :(得分:51)

通常在“ImagePullBackOff”的情况下,它会在几秒钟/几分钟后重试。如果您想再次手动尝试,可以删除旧窗格并重新创建窗格。删除和重新创建pod的一行命令是:

kubectl replace --force -f <yml_file_describing_pod>

答案 2 :(得分:19)

$ kubectl replace --force -f <resource-file>

如果一切顺利,你应该看到类似的东西:

<resource-type> <resource-name> deleted
<resource-type> <resource-name> replaced
在撰写本文时,可以在Kubernetes文档,“manage-deployment”和kubectl-cheatsheet页面中找到详细信息。

答案 3 :(得分:6)

如果PodDeploymentService的一部分,则将其删除将重新启动Pod,并有可能将其放置到另一个节点上:

$ kubectl delete po $POD_NAME

replace,如果它是个人Pod

$ kubectl get po -n $namespace $POD_NAME -o yaml | kubectl replace -f -

答案 4 :(得分:2)

尝试删除吊舱,它将尝试再次拉起图像。

kubectl delete pod <pod_name> -n <namespace_name>

答案 5 :(得分:0)

首先尝试查看广告连播出了什么问题:

kubectl logs -p <your_pod>

就我而言,这是YAML文件的问题。

因此,我需要更正配置文件并替换它:

kubectl replace --force -f <yml_file_describing_pod>

答案 6 :(得分:0)

ImagePullBackOff的问题很可能是由于图像不存在或pod YAML文件出现问题。

我将要做的

kubectl get pod -n $namespace $POD_NAME --export > pod.yaml | kubectl -f apply -

我还将看到pod.yaml,以了解早期的pod无法正常工作的原因

答案 7 :(得分:0)

也有可能是拉取策略未定义或 kubernetes 配置为从集线器拉取但由于网络问题而失败。尝试设置本地安全注册表并执行 pull 。它会起作用。