Jak ponowić próbę pobrania obrazu w podach Kubernetes?


92

Jestem nowy w Kubernetes. Mam problem w strąkach. Kiedy uruchamiam polecenie

 kubectl get pods

Wynik:

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

Ze względu na problem z węzłem „wso2am-default-813fy” muszę go ponownie uruchomić. Jakieś sugestie?

Odpowiedzi:


70

Zwykle w przypadku „ImagePullBackOff” jest to ponawiane po kilku sekundach / minutach. Jeśli chcesz spróbować ponownie ręcznie, możesz usunąć stary pojemnik i odtworzyć go. Jedno wierszowe polecenie do usunięcia i ponownego utworzenia kapsuły to:

kubectl replace --force -f <yml_file_describing_pod>

6
Jeśli masz zestaw replikacyjny / kontroler zarządzający tym kapsułem, po jego zabiciu powinien zostać automatycznie utworzony nowy pod.
Hem

^^ absolutnie. Byłbym bardzo zmartwiony, gdyby zabijając kapsułę, zniknął na dobre.
Damien Roche

3
Uważam, że kubectl replace --force -f ...byłoby to równoważne usunięciu, a następnie utworzeniu
Oliver

1
Jeśli Twój kapsuła została utworzona za pomocą wdrożenia, po prostu usuń kapsułę - nowa zostanie utworzona automatycznie
Illidan

Dlaczego ta --forceopcja jest wymagana?
mchawre

221

W przypadku braku pliku yaml:

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


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

jeśli wszystko pójdzie dobrze, powinieneś zobaczyć coś takiego:

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

szczegóły na ten temat można znaleźć w dokumentacji Kubernetes, na stronach „manage-deployment” i kubectl-cheatsheet w momencie pisania.


Skąd mam wiedzieć, jak powinien wyglądać plik zasobów dla kapsuły? Widziałem plik ./pod.json, ale link nie wspomina o żadnym szablonie ani podobnym
Dominique Paul

7

Jeśli Podjest częścią Deploymentlub Service, usunięcie go spowoduje ponowne uruchomienie Podi potencjalnie umieszczenie go w innym węźle:

$ kubectl delete po $POD_NAME

replacejeśli jest to osoba fizyczna Pod:

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


2

Spróbuj z usunięciem poda, spróbuje ponownie pobrać obraz.

kubectl delete pod <pod_name> -n <namespace_name>


0

Najpierw spróbuj sprawdzić, co jest nie tak z kapsułą:

kubectl logs -p <your_pod>

W moim przypadku był to problem z plikiem YAML.

Musiałem więc poprawić plik konfiguracyjny i zastąpić go:

kubectl replace --force -f <yml_file_describing_pod>

0

Najprawdopodobniej problem z ImagePullBackOff wynika z braku obrazu lub problemu z plikiem pod YAML.

Zrobię to

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

Chciałbym również zobaczyć plik pod.yaml, aby zobaczyć, dlaczego wcześniejszy moduł nie działał

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.