如何在kubernetes Pods中重试镜像拉取



我是kubernetes的新手。我的吊舱有问题。当我运行命令时

 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"节点的问题,我需要重新启动它。有什么建议吗?

如果没有yaml文件:

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

通常在"ImagePullBackOff"的情况下,会在几秒/分钟后重试。如果你想手动重试,你可以删除旧的pod并重新创建pod。删除和重新创建吊舱的单行命令是:

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

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

<resource-type> <resource-name> deleted
<resource-type> <resource-name> replaced

在撰写本文时,可以在Kubernetes文档、"管理部署"和kubectl备忘单页面中找到详细信息。

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

$ kubectl delete po $POD_NAME

replace如果是单个Pod:

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

尝试删除pod,它将再次尝试拉取图像。

kubectl delete pod <pod_name> -n <namespace_name>

首先试着看看pod出了什么问题:

kubectl logs -p <your_pod>

在我的情况下,这是YAML文件的问题

所以,我需要更正配置文件并替换它:

kubectl replace --force -f <yml_file_describing_pod>

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

我要做的是这个

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

我还会看到pod.yaml,看看为什么早期的pod不工作

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

最新更新