Como tentar extrair novamente a imagem em pods do Kubernetes?

90

Eu sou novo no kubernetes. Eu tenho um problema nos pods. Quando eu executo o comando

 kubectl get pods

Resultado:

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

Devido a um problema de nó "wso2am-default-813fy", preciso reiniciá-lo. Alguma sugestão?

Dilshani Subasinghe
fonte

Respostas:

68

Normalmente, no caso de "ImagePullBackOff", ele é repetido após alguns segundos / minutos. Caso queira tentar novamente manualmente, você pode excluir o pod antigo e recriar o pod. O comando de uma linha para excluir e recriar o pod seria:

kubectl replace --force -f <yml_file_describing_pod>
Ayon Nahiyan
fonte
6
Se você tiver um conjunto de replicação / controlador gerenciando este pod, um novo pod deve ser criado automaticamente após eliminá-lo.
Hem
^^ absolutamente. Eu ficaria muito preocupado se o pod da morte o fizesse desaparecer para sempre.
Damien Roche
3
Eu acredito kubectl replace --force -f ...que seria equivalente a excluir seguido de criar
Oliver
1
Se seu pod foi criado por meio de implantação, basta excluir um pod - um novo será criado automaticamente
Illidan
Por que a --forceopção é necessária?
mchawre
220

Caso não tenha o arquivo yaml:

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

Maciek Sawicki
fonte
19
$ kubectl replace --force -f <resource-file>

se tudo correr bem, você deverá ver algo como:

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

detalhes sobre isso podem ser encontrados na documentação do Kubernetes, nas páginas "manage-deployment" e kubectl-cheatsheet no momento da escrita.

eversMcc
fonte
Como posso saber como deve ser o arquivo de recurso do pod? Eu vi o arquivo ./pod.json, mas o link não menciona nenhum modelo ou similar
Dominique Paul
7

Se Podfor parte de um Deploymentou Service, excluí-lo irá reiniciar o Pode, potencialmente, colocá-lo em outro nó:

$ kubectl delete po $POD_NAME

replacese for um indivíduo Pod:

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

Carlos Nunez
fonte
2

Tente excluir o pod, ele tentará puxar a imagem novamente.

kubectl delete pod <pod_name> -n <namespace_name>

Sachin Arote
fonte
0

Primeiro tente ver o que há de errado com o pod:

kubectl logs -p <your_pod>

No meu caso, foi um problema com o arquivo YAML.

Então, eu precisava corrigir o arquivo de configuração e substituí-lo:

kubectl replace --force -f <yml_file_describing_pod>
edubriguenti
fonte
0

Muito provavelmente, o problema de ImagePullBackOff é devido à imagem não estar presente ou a um problema com o arquivo YAML do pod.

O que vou fazer é isso

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

Eu também veria o pod.yaml para ver por que o pod anterior não funcionava

Ankur Kothari
fonte