Выбор ответа Middle Отладка в кластере обновлено

CrashLoopBackOff с кодом 0

Вопрос

Контейнер в CrashLoopBackOff, но Last State: Terminated, Reason: Completed, Exit Code: 0. В чём вероятная причина?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Главный процесс завершается, а restartPolicy: Always ждёт вечный процесс. Контейнер Deployment должен работать постоянно.

Варианты ответа

  1. Главный процесс завершается, а restartPolicy: Always ждёт вечный процессправильный ответ
  2. Контейнер убивает OOM killer, а kubelet записывает такой выход в статус как код 0
  3. Не проходит readiness probe, и kubelet перезапускает контейнер с кодом 0
  4. Kubernetes считает код 0 ошибкой, приложение должно возвращать код 1

Разбор

Контейнер Deployment должен работать постоянно. Если главный процесс завершился, даже успешно, kubelet перезапускает его, а частые перезапуски дают CrashLoopBackOff. Типичные причины: сервис запущен в режиме демона (nginx без daemon off), entrypoint-скрипт без exec, одноразовая задача в Deployment вместо Job. OOM дал бы 137, readiness не перезапускает.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.