Как повторить попытку извлечения изображения в контейнерах кубернетов?


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» мне нужно перезапустить его. Любое предложение?

Ответы:


69

Обычно в случае "ImagePullBackOff" повторяется через несколько секунд / минут. Если вы хотите повторить попытку вручную, вы можете удалить старый модуль и воссоздать его заново. Однострочная команда для удаления и воссоздания модуля:

kubectl replace --force -f <yml_file_describing_pod>

6
Если у вас есть набор репликации / контроллер, управляющий этим модулем, новый модуль должен быть автоматически создан после его уничтожения.
Hem

^^ абсолютно. Я был бы очень обеспокоен, если бы смертоносная капсула исчезла навсегда.
Дэмиен Рош

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, на страницах «manage-deployment» и kubectl-cheatsheet на момент написания.


Как узнать, как должен выглядеть файл ресурсов для модуля? Я видел файл ./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.