Skip to content

kubectl

Утилита kubectl - командная утилита для взаимодействия с кластерами kubernetes. Позволяет управлять всеми ресурсами кластера через командную строку.

api-resources

Список доступных ресурсов кластера. Полезна для получения всех возможных для использование и управления ресурсов.

kubectl api-resources
kubectl api-resources

explain

Детальное описание конкретного ресурса k8s. Подробная документация от kubernetes по любому ресурсу. Можно указывать (через точку) конкретные поля спецификации.

kubectl explain
kubectl explain pod

kubectl explain pod.spec.containers

get

Получение списка ресурсов

kubectl get
# Получить информацию об основных объектах кластера
kubectl get all

#Получение всех ресурсов во всех неймспейсах
kubectl get all -A

# Получить информацию о конкретных объектах кластера
kubectl get pods,deployments,services

describe

Подробная информация о ресурсе. Предоставляет контекстную информацию, которая может быть полезной для диагностики проблем.

kubectl describe
# Подробная информация о поде
kubectl describe pod/pod_name

# Подробная информация о развертывании
kubectl describe deployment/deploy_name

create

Создание ресурсов: подов, служб, развертываний и пр

kubectl create
# Создание объекта deployment с определенным состоянием
kubectl create deployment my-deployment --image=nginx:latest --replicas=3

apply

Запуск файлов-манифестов для создания или обновления ресурсов.

kubectl apply
kubectl apply -f /file_name.yaml

# Если ресурс описанный в манифесте не существует - он будет создан в кластере
# Если состояния ресурсов в манифесте и кластере отличаются - работающий в кластере ресурс обновится

delete

Команда для удаления существующих ресурсов кластера

delete
# Удаление конкретного ресурса по имени
kubectl delete pod/pod_name

# Удаление ресурсов указаных в манифесте
kubectl delete -f /file_name.yaml

# Удаление ресурсов с определенными метками
kubectl delete pods -l app=my-app

# Удаление всех ресурсов во всех пространствах имен
kubectl delete all --all -n my-namespace

logs

Позволяет просматривать логи контейнеров внутри пода

logs
# Получение логов от последнего запущенного пода
kubectl logs my-pod-name
# Получение логов от всех контейнеров пода
kubectl logs my-pod-name --all-containers
# Получение логов от конкретного контейнера в поде
kubectl logs my-pod-name -c my-container name
# Получение логов в реальном времени
kubectl logs -f my-pod-name -c my-container-name
# Получение логов с метками времени
kubectl logs --timestamps my-pod-name
# Получение последних ста логов
kubectl logs --tail=100 my-pod-name
# Получение логов с предыдущего пода, если был перезапуск
kubectl logs --previous POD_NAME

edit

Команда для быстрого редактирования существующих ресурсов k8s прямо в консоли. После внесения изменений и сохранения, ресурс немедленно обновляется, если изменения имели корректный синтаксис. Стоит с аккуратностью использовать данную команду, потому что сложно отслеживать изменения ресурсов, они нигде не фиксируются и не попадают в систему контроля версий.

edit
kubectl edit pod <pod-name> -n <namespace>

scale

Команда, которая быстро позволяет масштабировать существующие ресурсы. В основном, применима к таким ресурсам как: Deployment, ReplicaSet или StatefulSet

scale
kubectl scale deployment <deployment-name> --replicas=<desired-replica-count>

exec

Выполняет команду внутри контейнера в указанном поде. Можно указывать конкретный контейнер

exec --
# Подключаемся к оболочке bash контейнера в интерактивном режиме
kubectl exec -it <pod-name> -- /bin/bash
# Подключаемся к конкретному контейнеру
kubectl exec -it <pod-name> -c <cont-name> -- sh
# Запускаем команду ls внутки оболочки shell внутри контейнера
kubectl exec -it <pod-name> -c <cont-name> -- sh -c 'ls -la /var/www/html'

port-forward

Установка прямого соединения между портами локальной машины и портами в подах

port-forward res_type/res_name local_port/pod_port
# Прямое соединение с подом
kubectl port-forward my-pod 8080:8080

# Соединение с сервисом
kubectl port-forward service/my-service 8080:8080

api-resources

Позволяет легко узнать о доступных ресурсах Kubernetes и использовать их в дальнейшем для управления кластером.

api-resources
kubectl api-resources

Эта команда выведет список ресурсов API Kubernetes, таких как поды (Pods), службы (Services), развертывания (Deployments) и другие. Каждый ресурс будет сопровождаться информацией о его сокращенном имени, полном имени, сокращенном синониме и возможности.

componentstatus

Используется для получения состояния компонентов Kubernetes. Компоненты Kubernetes могут включать в себя API-сервер, контроллеры, планировщик и другие важные части системы. Результат выполнения этой команды позволяет увидеть, работают ли эти компоненты нормально.

componentstatus
kubectl get componentstatus

Эта команда выведет состояние всех компонентов Kubernetes, указывая, работает ли каждый из них. Например, вы увидите информацию о компонентах, таких как:

  • etcd: Состояние хранилища данных etcd, которое используется Kubernetes для хранения состояния кластера.
  • kube-apiserver: API-сервер Kubernetes, который предоставляет доступ к API кластера.
  • kube-controller-manager: Контроллер-менеджер Kubernetes, который отвечает за контрольный цикл компонентов кластера.
  • kube-scheduler: Планировщик Kubernetes, который отвечает за распределение задач по узлам кластера.

Результат выполнения команды kubectl get componentstatus позволяет операторам и администраторам отслеживать работоспособность различных компонентов Kubernetes и выявлять проблемы, если они возникают.

use-context

Используется для выбора текущего контекста конфигурации Kubernetes. Контекст в Kubernetes определяет набор параметров, необходимых для взаимодействия с кластером, таких как сервер API Kubernetes, имя пользователя и данные аутентификации.

use-context
kubectl config use-context my-cluster
# После выполнения этой команды kubectl будет использовать указанный контекст для выполнения всех операций взаимодействия с кластером, таких как
# просмотр, создание, удаление ресурсов и т. д.

# список доступных контекстов
kubectl config get-contexts

# текущий активный контекст
kubectl config current-context

Использование правильного контекста важно, чтобы убедиться, что вы взаимодействуете с правильным кластером Kubernetes.

set-credentials

Используется для добавления или обновления учетных данных пользователя в файле конфигурации kubectl

set-credentials
kubectl config set-credentials my-user --client-certificate=my-cert.crt --client-key=my-key.key

delete-user

Используется для удаления учетных данных пользователя из файла конфигурации kubectl

delete-user
kubectl config delete-user <user-name>