JuniorДебаггингЧастоЕщё не отвечали
Pod застрял в ImagePullBackOff — какие обычные причины и что проверить первым?
Только что созданный Pod не переходит в Ready — его статус ImagePullBackOff. Ниже список подов и Events из describe. Скажите, что значит этот статус, назовите обычные причины и дайте фикс для того, что показывают эти события.
$ kubectl get pod web-7d9c8
NAME READY STATUS RESTARTS AGE
web-7d9c8 0/1 ImagePullBackOff 0 90s
$ kubectl describe pod web-7d9c8
Events:
Warning Failed kubelet Failed to pull image "myco/web:latset":
docker.io/myco/web:latset: not found
Warning Failed kubelet Error: ErrImagePull
Normal BackOff kubelet Back-off pulling image "myco/web:latset"
Диагностируйте и исправьте.
ImagePullBackOff — kubelet не смог скачать образ и делает паузы. Смотрите Events в describe — здесь latset опечатка, реестр отвечает not-found; исправьте тег. Прочее: нет imagePullSecret, неверный хост или лимит на пул.
- ✗Путать
ImagePullBackOffс падающим контейнером вместо неудачного пула - ✗Пропускать Events в
describe, где назван точный сбой пула - ✗Забывать, что приватному образу нужен
imagePullSecret
- →Как подключить
imagePullSecret, чтобы Pod тянул из приватного реестра? - →Чем изменяемый тег вроде
latestрискован для воспроизводимых выкатов?
Оглавление
Решение
1. Что значит статус
ImagePullBackOff — kubelet не смог скачать образ и делает экспоненциальные паузы между повторами. Контейнер ещё не запускался, поэтому логов приложения нет.
2. Читаем Events
Failed to pull image "myco/web:latset": docker.io/myco/web:latset: not found
Причина названа прямо: тег latset — опечатка latest, такого тега в реестре нет.
3. Фикс и прочие причины
- опечатка/несуществующий тег → исправить тег (здесь
latest); - приватный реестр → добавить
imagePullSecretв Pod/ServiceAccount; - неверный хост реестра → поправить полный путь образа;
- rate limit (Docker Hub) → аутентификация или зеркало.
Оглавление