Come riprovare a eseguire il pull dell'immagine in un pod Kubernetes?


90

Sono nuovo su Kubernetes. Ho un problema con i pod. Quando eseguo il comando

 kubectl get pods

Risultato:

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

A causa di un problema con il nodo "wso2am-default-813fy", è necessario riavviarlo. Qualche suggerimento?

Risposte:


68

Di solito in caso di "ImagePullBackOff" viene ritentato dopo pochi secondi / minuti. Nel caso in cui desideri riprovare manualmente, puoi eliminare il vecchio pod e ricreare il pod. Il comando di una riga per eliminare e ricreare il pod sarebbe:

kubectl replace --force -f <yml_file_describing_pod>

6
Se hai un set di replica / controller che gestisce questo pod, dovrebbe essere creato automaticamente un nuovo pod dopo averlo ucciso.
Hem

^^ assolutamente. Sarei molto preoccupato se uccidere pod lo facesse scomparire per sempre.
Damien Roche

3
Credo che kubectl replace --force -f ...sarebbe equivalente a eliminare seguito da creare
Oliver

1
Se il tuo pod è stato creato tramite la distribuzione, elimina un pod: ne verrà creato uno nuovo automaticamente
Illidan

Perché l' --forceopzione è richiesta?
mchawre

220

In caso di mancanza del file yaml:

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


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

se tutto va bene, dovresti vedere qualcosa del tipo:

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

i dettagli di questo possono essere trovati nella documentazione di Kubernetes, nelle pagine "manage-deployment" e kubectl-cheatsheet al momento della scrittura.


Come faccio a sapere come dovrebbe apparire il file di risorse per il pod? Ho visto il file ./pod.json ma il link non menziona alcun modello o simile
Dominique Paul

7

Se Podfa parte di un Deploymento Service, eliminandolo verrà riavviato Pode, potenzialmente, lo posizionerà su un altro nodo:

$ kubectl delete po $POD_NAME

replacese è un individuo Pod:

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


2

Prova a eliminare il pod, proverà a estrarre nuovamente l'immagine.

kubectl delete pod <pod_name> -n <namespace_name>


0

Prima prova a vedere cosa c'è che non va nel pod:

kubectl logs -p <your_pod>

Nel mio caso è stato un problema con il file YAML.

Quindi, avevo bisogno di correggere il file di configurazione e sostituirlo:

kubectl replace --force -f <yml_file_describing_pod>

0

Molto probabilmente il problema di ImagePullBackOff è dovuto alla mancanza dell'immagine o al problema con il file YAML del pod.

Quello che farò è questo

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

Vorrei anche vedere il pod.yaml per vedere il motivo per cui il pod precedente non funzionava

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.