Ответ
Для отладки подов в Kubernetes я использую комбинацию стандартных команд kubectl и дополнительных инструментов. Вот мой типичный подход:
-
Проверка состояния и событий:
kubectl describe pod <pod-name> -n <namespace>Это первое, что я делаю, чтобы увидеть состояние контейнеров, события (Events) и возможные проблемы с подами, секретами или конфигурациями.
-
Просмотр логов:
# Логи текущего контейнера kubectl logs <pod-name> -n <namespace> # Логи предыдущего экземпляра контейнера (если он перезапускался) kubectl logs <pod-name> --previous -n <namespace> # Логи конкретного контейнера в мультиконтейнерном поде kubectl logs <pod-name> -c <container-name> -n <namespace> # Логи в реальном времени kubectl logs -f <pod-name> -n <namespace> -
Интерактивный доступ для исследования:
# Запуск оболочки в контейнере пода kubectl exec -it <pod-name> -n <namespace> -- /bin/bash # Если bash недоступен, пробую sh kubectl exec -it <pod-name> -n <namespace> -- /bin/shВнутри контейнера проверяю процессы (
ps aux), сетевые соединения (netstat -tulpnилиss -tulpn), монтирования (mount), переменные окружения (env) и наличие ожидаемых файлов. -
Отладка с временным контейнером (Ephemeral Container): Для образов без оболочки (например,
scratch) или когда нужно добавить инструменты отладки, использую:kubectl debug -it <pod-name> --image=busybox:latest --target=<container-name> -n <namespace>Это позволяет присоединить временный контейнер с отладочными утилитами к пространству имен целевого пода.
-
Проброс портов для локального тестирования:
kubectl port-forward pod/<pod-name> 8080:80 -n <namespace>Затем обращаюсь к сервису через
localhost:8080, чтобы проверить его работу извне кластера. -
Дополнительные инструменты:
- Lens IDE: Для визуального анализа состояния кластера, подов и логов.
- k9s: Терминальный дашборд для быстрой навигации и выполнения команд.
- Centralized Logging: Если настроен стек EFK (Elasticsearch, Fluentd/Fluent Bit, Kibana) или Loki/Grafana, ищу логи там для агрегированного представления.
Ключевой момент — начинать с describe и logs, чтобы понять контекст, а затем углубляться с помощью exec или debug.