CrashLoopBackOff: где искать причину падения контейнера
После выката новой версии под завис в состоянии CrashLoopBackOff:
NAME READY STATUS RESTARTS AGE
api-7d9f4c6b58-x2kql 0/1 CrashLoopBackOff 6 8m
Обращение к логам пода возвращает либо пустой вывод, либо пару строк уже нового запуска, где ничего полезного нет.
Как быстрее всего добраться до причины падения?
- Дождаться, пока под окончательно перейдёт в состояние Error: только там kubelet сохраняет полный вывод контейнера, а в CrashLoopBackOff логи затираются при каждом рестарте
- Запросить логи предыдущего завершившегося контейнера и посмотреть события пода в описании — там видны причина выхода и код завершения
- Подключиться в под интерактивной сессией и запустить приложение вручную
- Пересоздать Deployment: при новом ReplicaSet логи начнут писаться корректно
