Знакомая ситуация: под падает в CrashLoopBackOff, и вы начинаете по очереди гонять
kubectl describe pod, kubectl logs --previous, kubectl get events... и пытаетесь склеить картину в голове.kubectl-crashloop делает это за вас одной командой:kubectl crashloop payments-api-proglib -n production
Плагин объединяет в один терминальный отчёт:
- Warning Events из кластера
-
LastTerminationState (exit code, причина, время)- Логи предыдущего контейнера (
--previous)- Если предыдущих логов уже нет — фолбэк на текущие с пометкой
Что ещё умеет
-o json — JSON-вывод для автоматизации и incident-тулинга--tail N — количество строк логов на контейнер--limit N — максимум записей о крашах-c container — ограничить вывод одним контейнеромУстановка через Krew:
kubectl krew install crashloop
Базовый запуск:
kubectl crashloop payments-api-proglib
С указанием namespace:
kubectl crashloop payments-api-proglib -n production
Конкретный контейнер, больше логов:
kubectl-crashloop payments-api-6d9c9b77d9-x2n5k -n production -c api --tail 10
JSON-вывод для скриптов:
kubectl crashloop payments-api-6d9c9b77d9-x2n5k -n production -o json
Важный нюанс
Плагин работает на уровне конкретного пода, а не деплоймента. Если хотите проверить деплоймент, то выберите один из реплика-подов вручную. Это сознательное ограничение: инструмент остаётся простым и предсказуемым.
Необходимые права доступа
Минимальный набор RBAC-прав в нужном namespace:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: kubectl-crashloop
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get"]
- apiGroups: [""]
resources: ["pods/log"]
verbs: ["get"]
- apiGroups: [""]
resources: ["events"]
verbs: ["list"]
➡️ Репозиторий
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека devops'a
#арсенал_инженера
