get, describe, logs, exec

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

kubectl — официальный интерфейс командной строки для взаимодействия с кластерами Kubernetes, отправляющий API-запросы к kube-apiserver и отображающий ответы в читаемом человеком или машиночитаемом виде. Четыре основные команды для чтения: kubectl get <resource> для вывода списка объектов, kubectl describe <resource> <name> для подробной информации о событиях и состоянии, kubectl logs <pod> [-c <container>] для потоковой передачи stdout/stderr контейнера и kubectl exec -it <pod> -- <command> для выполнения команд внутри работающего контейнера — вместе они образуют основной инструментарий отладки K8s-нагрузок. Вывод можно форматировать с помощью -o wide (дополнительные столбцы), -o yaml (полная спецификация ресурса), -o json (машиночитаемый) или -o jsonpath='{.spec.nodeName}' для извлечения конкретных полей в shell-скриптах. kubectl считывает конфигурацию подключения к кластеру из ~/.kube/config (управляется через kubectl config), поддерживает несколько контекстов для переключения между K8s-кластерами и расширяется плагинами, распространяемыми через krew — такими как kubectl neat, kubectl stern и kubectl tree, — улучшающими стандартный рабочий процесс с kubectl.

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

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

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

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

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

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

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

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