Какие причины состояния CrashLoopBackOff в Kubernetes
Что проверяют
Понимаете ли вы, что CrashLoopBackOff это не ошибка, а состояние: контейнер падает, kubelet его перезапускает и увеличивает паузу между попытками. Интервьюеру важен порядок диагностики, а не список причин наизусть. Следом часто спрашивают, чем это отличается от ImagePullBackOff и OOMKilled.
Как отвечать
Механика: при restartPolicy: Always (у подов Deployment другой и не бывает) kubelet перезапускает контейнер с экспоненциальной задержкой 10, 20, 40 секунд и дальше, до потолка в пять минут. Если контейнер проработал десять минут без падений, задержка сбрасывается.
Причины:
- приложение падает на старте: исключение, нет обязательной переменной окружения, база недоступна, а приложение не умеет ждать и выходит;
- процесс просто завершается: скрипт отработал с кодом 0, а политика перезапуска поднимает его снова. Для разовых задач нужен
Job; - память: превышен
resources.limits.memory, в описании подаReason: OOMKilledи код выхода 137; - liveness-проба: проверяет раньше, чем приложение готово, и убивает контейнер раз за разом. Для медленного старта есть
startupProbe; - неверные
commandиargs: команды нет в образе, в описании пода ошибка запуска или код 127; - образ не под ту архитектуру: arm64 против amd64, в логах
exec format error; - права:
runAsNonRoot, файловая система только для чтения, том без прав на запись.
Порядок диагностики: kubectl describe pod (Last State, код выхода, Events), затем kubectl logs <pod> --previous, потому что текущий контейнер мог только что стартовать. Если логов нет, поднимите копию пода с другой командой через kubectl debug --copy-to и посмотрите окружение изнутри.
Где спотыкаются
Смотрят kubectl logs без --previous и видят пустоту или логи нового запуска.
Путают состояния. Ошибка скачивания образа даёт ImagePullBackOff, отсутствующий ConfigMap в переменных окружения даёт CreateContainerConfigError, нехватка ресурсов на нодах оставляет под в Pending. До CrashLoopBackOff доходит, только если контейнер запустился и упал.
Советуют «добавить liveness-пробу» как лечение, хотя неверно настроенная проба сама частая причина цикла.