Сценарий: CrashLoopBackOff
Вопрос
После деплоя новые поды api в CrashLoopBackOff, старые ещё работают. Опиши, как будешь разбираться.
Попробуйте сами
Ответьте вслух за 2 минуты, как на собесе. Потом сверьтесь с тезисами: что прозвучало, а что нет.
Показать ответ и разбор
Коротко
Что должно прозвучать в ответе
`kubectl describe pod`: Last State, Reason и Exit Code, события; это сразу сужает круг
`kubectl logs --previous`: ошибка упавшего экземпляра
Код 1 и исключение: конфиг, переменные окружения, секреты, миграции, недоступная зависимость
Код 137: OOMKilled или убит liveness; 127/126: неверная команда; 0: процесс завершается
Сравнить с прошлой версией: что изменилось в образе, конфиге, манифесте
Если логов нет: `kubectl debug --copy-to` с `sleep` или запуск команды руками; при необходимости откат `rollout undo`
Что могут спросить следом
- Почему старые поды продолжают работать?
- Что делать, если ошибка только на одном узле?
- Как liveness может вызывать CrashLoopBackOff?
Разбор
Сначала фиксирую, что старые поды работают: rolling update застрял, потому что новые не становятся готовыми, и это хорошо, пользователи не пострадали. Если нужно, сразу откатываю rollout undo и разбираюсь спокойно. Дальше kubectl describe pod по новому поду: Last State, Reason и Exit Code. Код 1 с исключением говорит об ошибке приложения, и kubectl logs --previous обычно её показывает: не хватает переменной окружения, нет ключа в секрете, не применена миграция, не доступна зависимость. 137 с OOMKilled значит лимит памяти, 137 без OOMKilled или 143 часто означают, что контейнер убила liveness probe, тогда в событиях будет Liveness probe failed, и надо смотреть startupProbe и таймауты. 127 и 126 это неверная команда или права в образе, 0 значит процесс просто завершился. Сравниваю с предыдущей версией: diff образа, конфигурации и манифеста, обычно причина там. Если процесс падает мгновенно без логов, делаю копию пода через kubectl debug --copy-to с командой sleep infinity и запускаю приложение руками внутри.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.