Wie versuche ich erneut, Bilder in kubernetes Pods zu ziehen?

90

Ich bin neu in Kubernetes. Ich habe ein Problem in den Pods. Wenn ich den Befehl ausführe

 kubectl get pods

Ergebnis:

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

Aufgrund eines Problems mit dem Knoten "wso2am-default-813fy" muss ich ihn neu starten. Irgendein Vorschlag?

Dilshani Subasinghe
quelle

Antworten:

68

Normalerweise wird es bei "ImagePullBackOff" nach einigen Sekunden / Minuten wiederholt. Wenn Sie es manuell erneut versuchen möchten, können Sie den alten Pod löschen und den Pod neu erstellen. Der einzeilige Befehl zum Löschen und Neuerstellen des Pods lautet:

kubectl replace --force -f <yml_file_describing_pod>
Ayon Nahiyan
quelle
6
Wenn Sie einen Replikationssatz / Controller haben, der diesen Pod verwaltet, sollte nach dem Beenden automatisch ein neuer Pod erstellt werden.
Hem
^^ absolut. Ich wäre sehr besorgt, wenn das Töten von Pods endgültig verschwinden würde.
Damien Roche
3
Ich glaube, kubectl replace --force -f ...wäre gleichbedeutend mit Löschen, gefolgt von Erstellen
Oliver
1
Wenn Ihr Pod über die Bereitstellung erstellt wurde, löschen Sie einfach einen Pod - ein neuer wird automatisch erstellt
Illidan
Warum ist die --forceOption erforderlich?
Mchawre
220

Falls die yaml-Datei nicht vorhanden ist:

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

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

Wenn alles gut geht, sollten Sie etwas sehen wie:

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

Details dazu finden Sie in der Kubernetes-Dokumentation, in den Seiten "Verwalten der Bereitstellung" und in den Seiten " Kubectl-Cheatsheet" zum Zeitpunkt des Schreibens.

eversMcc
quelle
Woher weiß ich, wie die Ressourcendatei für den Pod aussehen soll? Ich habe die ./pod.json-Datei gesehen, aber der Link erwähnt keine Vorlage oder ähnliches
Dominique Paul
7

Wenn das PodTeil eines Deploymentoder ist Service, wird es durch Löschen neu gestartet Podund möglicherweise auf einem anderen Knoten platziert:

$ kubectl delete po $POD_NAME

replacees, wenn es eine Einzelperson ist Pod:

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

Carlos Nunez
quelle
2

Versuchen Sie beim Löschen des Pods, das Bild erneut abzurufen.

kubectl delete pod <pod_name> -n <namespace_name>

Sachin Arote
quelle
0

Versuchen Sie zuerst zu sehen, was mit dem Pod nicht stimmt:

kubectl logs -p <your_pod>

In meinem Fall war es ein Problem mit der YAML-Datei.

Also musste ich die Konfigurationsdatei korrigieren und ersetzen:

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

Höchstwahrscheinlich ist das Problem von ImagePullBackOff darauf zurückzuführen, dass entweder das Bild nicht vorhanden ist oder dass die YAML-Pod-Datei ein Problem aufweist.

Was ich tun werde, ist dies

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

Ich würde auch die pod.yaml sehen, um zu sehen, warum der frühere Pod nicht funktioniert hat

Ankur Kothari
quelle