Як повторити спробу витягування зображення в стручках кубернету?


92

Я новачок у кубернетах. У мене проблема в стручках. Коли я запускаю команду

 kubectl get pods

Результат:

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

Через проблему з вузлом "wso2am-default-813fy" мені потрібно його перезапустити. Будь-яка пропозиція?

Відповіді:


70

Зазвичай у випадку "ImagePullBackOff" це повторюється через кілька секунд / хвилин. Якщо ви хочете спробувати ще раз вручну, ви можете видалити старий стручок і відтворити його. Команда в один рядок для видалення та відтворення підпорядкування буде такою:

kubectl replace --force -f <yml_file_describing_pod>

6
Якщо у вас є набір реплікації / контролер, який керує цим стручком, новий стручок повинен бути автоматично створений після його вбивства.
Hem

^^ абсолютно. Я б дуже хвилювався, якби вбивця стручка зникла назавжди.
Damien Roche

3
Я вважаю, це kubectl replace --force -f ...було б еквівалентно видаленню з подальшим створенням
Олівер,

1
Якщо ваш стручок створений за допомогою розгортання, просто видаліть стручок - новий буде створений автоматично
Іллідан

Чому --forceпотрібен варіант?
mchawre


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

якщо все піде добре, ви повинні побачити щось на зразок:

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

детальну інформацію про це можна знайти в документації Kubernetes, "керування-розгортанням" та на сторінках chebecheet kubectl на момент написання статті.


Як я можу дізнатись, як повинен виглядати файл ресурсів для стручка? Я бачив файл ./pod.json, але у посиланні немає жодного шаблону чи подібного
Домінік Пол

7

Якщо Podє частиною Deploymentабо Service, видалення його перезапустить Podі, можливо, розмістить його на іншому вузлі:

$ kubectl delete po $POD_NAME

replaceце якщо це фізична особа Pod:

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


2

Спробуйте видалити стручок, він спробує знову витягнути зображення.

kubectl delete pod <pod_name> -n <namespace_name>


0

Спочатку спробуйте побачити, що не так із стручком:

kubectl logs -p <your_pod>

У моєму випадку це була проблема з файлом YAML.

Отже, мені потрібно було виправити файл конфігурації та замінити його:

kubectl replace --force -f <yml_file_describing_pod>

0

Швидше за все проблема ImagePullBackOff пов'язана або з тим, що зображення відсутнє, або з файлом YAML стручка.

Що я буду робити, це це

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

Я б також побачив pod.yaml, щоб зрозуміти, чому попередній струк не працював

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.