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?

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>

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 -


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.


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 -


2

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

kubectl delete pod <pod_name> -n <namespace_name>


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>

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.