Работа с Kubernetes через kubectl

Кубик: видеть кластер.

Домашняя шпаргалка по контекстам, namespace, подам и деплоям. Во всех примерах namespace и имена ресурсов замените на свои.

Контекст и namespace

kubectl config get-contexts

Посмотреть доступные кластеры и текущий контекст.

kubectl config current-context

Убедиться, с каким кластером сейчас идёт работа.

kubectl config use-context name

Переключиться на другой контекст.

kubectl get namespaces

Показать все пространства имён в кластере.

kubectl config set-context --current --namespace=dev

Установить namespace по умолчанию для текущего контекста.

Посмотреть состояние

kubectl get pods -n namespace

Список подов в нужном namespace.

kubectl get deploy,svc,ingress -n namespace

Краткая сводка основных ресурсов приложения.

kubectl get pods -A

Поды во всех namespace; удобно при первичной диагностике.

kubectl describe pod pod-name -n namespace

События, образ, проба здоровья и причины проблем конкретного пода.

kubectl get events -n namespace --sort-by=.lastTimestamp

Последние события по порядку времени.

Логи и доступ внутрь

kubectl logs pod-name -n namespace

Вывести логи основного контейнера пода.

kubectl logs -f deploy/app -n namespace

Следить за логами pod'ов deployment в реальном времени.

kubectl logs pod-name -c sidecar -n namespace

Взять логи конкретного контейнера в pod'е.

kubectl exec -it pod-name -n namespace -- sh

Открыть shell внутри запущенного контейнера.

kubectl port-forward svc/app 8080:80 -n namespace

Открыть локальный доступ к сервису на localhost:8080.

Применить изменения

kubectl apply -f manifest.yaml

Создать или обновить ресурсы, описанные в manifest-файле.

kubectl diff -f manifest.yaml

Сначала посмотреть, что изменится при apply.

kubectl set image deploy/app app=image:tag -n namespace

Обновить образ контейнера в deployment.

kubectl rollout status deploy/app -n namespace

Дождаться результата развёртывания.

kubectl rollout history deploy/app -n namespace

Посмотреть ревизии deployment.

kubectl rollout undo deploy/app -n namespace

Откатить deployment к предыдущей ревизии.

Перед apply в production полезно выполнить kubectl diff и проверить текущий context

Диагностика

kubectl get pod pod-name -n namespace -o wide

Узнать IP пода, ноду и дополнительные детали размещения.

kubectl top pods -n namespace

Потребление CPU и памяти; работает при установленном Metrics Server.

kubectl top nodes

Нагрузка по нодам кластера.

kubectl auth can-i create deployments -n namespace

Проверить, хватает ли текущих прав на нужное действие.

kubectl explain deployment.spec

Встроенная справка по полям Kubernetes API.