kubectl debug

Тема дорожной карты · Kubernetes

kubectl debug — это мощная команда, позволяющая создавать эфемерные отладочные контейнеры внутри работающего Pod Kubernetes. Она позволяет инженерам диагностировать проблемы без необходимости перезапуска или изменения исходной нагрузки. С помощью kubectl debug -it <pod> --image=busybox --target=<container> можно запустить sidecar-контейнер, который разделяет пространство имён процессов целевого контейнера. Это позволяет проверять файловую систему, переменные окружения и сетевое состояние. Флаг --copy-to позволяет создать копию Pod'а с изменёнными контекстами безопасности или образами, когда в оригинальном контейнере отсутствуют инструменты отладки. kubectl debug также поддерживает отладку на уровне узла через kubectl debug node/<node-name> -it --image=ubuntu, предоставляя доступ к пространствам имён хоста через containerd. Это делает kubectl debug незаменимым для диагностики крашей, OOMKill и некорректно настроенных Deployment в Kubernetes без необходимости использования kubectl exec в контейнерах, поставляемых без оболочки.

Как это работает

kubectl debug — это операция kubectl, которая общается с API-сервером Kubernetes. CLI читает ваш kubeconfig (по умолчанию ~/.kube/config), аутентифицируется (token, сертификат или OIDC), отправляет HTTPS-запрос API-серверу и печатает ответ. Для команд, изменяющих состояние (например, apply, patch, delete), API-сервер валидирует запрос, сохраняет изменения в etcd и триггерит соответствующие контроллеры. Это позволяет пользователям быстро и эффективно диагностировать и исправлять проблемы в кластере Kubernetes.

Когда применять

Используйте kubectl debug в ежедневных операциях кластера: инспектирование текущего состояния (kubectl get/describe), применение декларативных изменений (kubectl apply -f), отладка pods (kubectl logs/exec), валидация конфигов перед деплоем. Для повторяющихся workflow оборачивайте в shell-скрипты или Helm chart; для one-off отладки kubectl напрямую быстрее, чем писать инструменты. kubectl debug особенно полезен при работе с конфигурациями и приложениями, которые требуют моментальной отладки без необходимости перезапуска или изменения исходной нагрузки.

Типичные ошибки

Распространённые ловушки при использовании kubectl: забыли указать -n <namespace> и инспектируете не тот namespace; используете kubectl edit на production-ресурсах (нет audit trail — используйте GitOps); копипаст из Stack Overflow без чтения, что удаляется. Всегда выполняйте kubectl config current-context перед деструктивными командами, чтобы убедиться, что указываете на правильный кластер. Также важно убедиться, что вы используете правильные образы для отладки, чтобы избежать конфликтов и проблем с безопасностью.

Связанные понятия

Полезные ресурсы