如何重试Kubernetes Pod中的图像?


90

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

Answers:


68

通常在“ ImagePullBackOff”的情况下,会在几秒钟/分钟后重试。如果要手动重试,可以删除旧的容器并重新创建容器。删除和重新创建广告连播的单行命令为:

kubectl replace --force -f <yml_file_describing_pod>

6
如果您有复制集/控制器来管理此Pod,则应在杀死它后自动创建一个新Pod。
下摆

^^绝对。我很担心杀荚果是否永久消失。
达米安·罗什

3
我相信,kubectl replace --force -f ...将相当于删除后创建
奥利弗

1
如果您的广告连播是通过Deployment创建的,则只需删除一个广告连播-一个新的广告连播会自动创建
Illidan '18

为什么--force需要该选项?
mchawre


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

如果一切顺利,您应该会看到类似以下内容的信息:

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

有关详细信息,可在撰写本文时在Kubernetes文档,“管理部署”和kubectl-备忘单页面中找到。


我怎么知道Pod的资源文件应该是什么样子?我看到了./pod.json文件,但链接未提及任何模板或类似内容
Dominique Paul

7

如果PodDeployment或的一部分Service,则删除它会重新启动,Pod并且有可能将其放置在另一个节点上:

$ kubectl delete po $POD_NAME

replace如果是个人的话Pod

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



0

首先尝试查看Pod出了什么问题:

kubectl logs -p <your_pod>

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

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

kubectl replace --force -f <yml_file_describing_pod>

0

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

我要做的就是这个

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

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.