Comment réessayer l'extraction d'image dans un pods Kubernetes?

90

Je suis nouveau sur kubernetes. J'ai un problème dans les pods. Quand j'exécute la commande

 kubectl get pods

Résultat:

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

En raison d'un problème de nœud "wso2am-default-813fy", je dois le redémarrer. Toute suggestion?

Dilshani Subasinghe
la source

Réponses:

68

Habituellement, dans le cas de "ImagePullBackOff", il est réessayé après quelques secondes / minutes. Si vous souhaitez réessayer manuellement, vous pouvez supprimer l'ancien pod et recréer le pod. La commande en une ligne pour supprimer et recréer le pod serait:

kubectl replace --force -f <yml_file_describing_pod>
Ayon Nahiyan
la source
6
Si vous disposez d'un jeu de réplication / d'un contrôleur gérant ce pod, un nouveau pod doit être automatiquement créé après sa suppression.
Hem
^^ absolument. Je serais très inquiet si tuer le pod le faisait disparaître pour de bon.
Damien Roche
3
Je pense que kubectl replace --force -f ...cela équivaudrait à supprimer suivi de créer
Oliver
1
Si votre pod a été créé via le déploiement, supprimez simplement un pod - un nouveau sera créé automatiquement
Illidan
Pourquoi l' --forceoption est-elle requise?
mchawre
220

En cas de ne pas avoir le fichier yaml:

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

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

si tout se passe bien, vous devriez voir quelque chose comme:

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

des détails à ce sujet peuvent être trouvés dans la documentation de Kubernetes, les pages «manage-deployment» et kubectl-cheatsheet au moment de la rédaction.

eversMcc
la source
Comment savoir à quoi doit ressembler le fichier de ressources du pod? J'ai vu le fichier ./pod.json mais le lien ne mentionne aucun modèle ou similaire
Dominique Paul
7

Si le Podfait partie d'un Deploymentou Service, sa suppression redémarrera le Podet, potentiellement, le placera sur un autre nœud:

$ kubectl delete po $POD_NAME

replacesi c'est un individu Pod:

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

Carlos Nunez
la source
2

Essayez de supprimer le pod, il essaiera à nouveau d'extraire l'image.

kubectl delete pod <pod_name> -n <namespace_name>

Sachin Arote
la source
0

Essayez d'abord de voir ce qui ne va pas avec le pod:

kubectl logs -p <your_pod>

Dans mon cas, c'était un problème avec le fichier YAML.

Donc, j'avais besoin de corriger le fichier de configuration et de le remplacer:

kubectl replace --force -f <yml_file_describing_pod>
edubriguenti
la source
0

Très probablement, le problème de ImagePullBackOff est dû soit à l'absence de l'image, soit à un problème avec le fichier YAML du pod.

Ce que je vais faire est ceci

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

Je verrais également le pod.yaml pour voir pourquoi le pod précédent ne fonctionnait pas

Ankur Kothari
la source