Выбор ответа Middle Отладка в кластере обновлено
CrashLoopBackOff с кодом 0
Вопрос
Контейнер в CrashLoopBackOff, но Last State: Terminated, Reason: Completed, Exit Code: 0. В чём вероятная причина?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Главный процесс завершается, а restartPolicy: Always ждёт вечный процесс. Контейнер Deployment должен работать постоянно.
Варианты ответа
- Главный процесс завершается, а
restartPolicy: Alwaysждёт вечный процессправильный ответ - Контейнер убивает OOM killer, а kubelet записывает такой выход в статус как код 0
- Не проходит readiness probe, и kubelet перезапускает контейнер с кодом 0
- Kubernetes считает код 0 ошибкой, приложение должно возвращать код 1
Разбор
Контейнер Deployment должен работать постоянно. Если главный процесс завершился, даже успешно, kubelet перезапускает его, а частые перезапуски дают CrashLoopBackOff. Типичные причины: сервис запущен в режиме демона (nginx без daemon off), entrypoint-скрипт без exec, одноразовая задача в Deployment вместо Job. OOM дал бы 137, readiness не перезапускает.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.