JuniorДебаггингЧастоЕщё не отвечали
Pod не работает и не пишет полезных логов — какие команды kubectl запускаете и в каком порядке?
Pod не переходит в Ready, а kubectl logs не печатает ничего полезного. Прежде чем гадать — какова стандартная последовательность первого осмотра и что даёт каждая команда?
$ kubectl get pod api-5f6
NAME READY STATUS RESTARTS AGE
api-5f6 0/1 Running 0 40s
$ kubectl logs api-5f6
(нет вывода)
Дайте порядок триажа и что искать на каждом шаге.
Сначала kubectl describe pod — он показывает Events, Conditions и State/lastState с кодом выхода. Если процесс умер, kubectl logs --previous читает его stdout; kubectl get events даёт контекст. Гадайте только после describe.
- ✗Считать статус
Runningдоказательством, что контейнер здоров - ✗Забывать про
logs --previousдля уже перезапущенного контейнера - ✗Гадать с фиксами до чтения Events в
describe
- →Что блок
lastState.terminatedконтейнера говорит такого, чего не дадут живые логи? - →Когда вы возьмёте
kubectl debugвместоlogsиdescribe?
Оглавление
Решение
Порядок триажа
$ kubectl describe pod api-5f6 # Events + Conditions + State/lastState (exit code)
$ kubectl logs api-5f6 --previous # stdout упавшего инстанса контейнера
$ kubectl get events --sort-by=.lastTimestamp # контекст кластера по времени
kubelet (pull, schedule, probe), а State/Last State контейнера — код выхода и причину (Error, OOMKilled, Completed).
читает вывод предыдущего, уже мёртвого инстанса.
describe— самый информативный шаг: разделEventsпоказывает, что делалlogs --previous— если контейнер уже рестартовал, живые логи пусты;--previousget events— общая картина: вытеснения, проблемы планирования, FailedMount.
Для образов без shell — kubectl debug с эфемерным контейнером (отдельный вопрос).
Оглавление