Открыть сервис

kubectl — интерфейс командной строки Kubernetes

kubectl — это интерфейс командной строки (CLI) для управления кластерами Kubernetes, позволяющий развёртывать приложения, управлять ресурсами кластера и просматривать их состояние. Инструмент является официальным клиентом Kubernetes API и предоставляет операторам и разработчикам основной способ взаимодействия с кластером из терминала. kubectl работает путём отправки HTTP-запросов к API-серверу Kubernetes, который выступает в роли центральной точки управления всеми операциями в кластере.

История

Проект Kubernetes был основан в 2014 году компанией Google на основе внутренней системы управления контейнерами Borg. Первоначально kubectl назывался kubecfg и представлял собой простой инструмент для управления подами. С развитием проекта и его передачей в 2015 году в Фонд Cloud Native Computing Foundation (CNCF) инструмент был переработан и переименован в kubectl. Название происходит от сочетания слов «Kubernetes» и «control» (управление). Активная разработка ведётся в репозитории GitHub проекта Kubernetes, а новые версии выпускаются синхронно с релизами самого Kubernetes.

Установка и настройка

kubectl распространяется в виде единого бинарного исполняемого файла для операционных систем Windows, Linux и macOS. Установка обычно выполняется через пакетные менеджеры (например, apt, brew, choco) либо путём прямого скачивания с официального сайта Kubernetes. После установки требуется настройка доступа к кластеру.

Конфигурация kubectl хранится в файле kubeconfig, который по умолчанию располагается в ~/.kube/config. Этот файл содержит информацию о кластерах, контекстах (совокупность кластера, пользователя и пространства имён) и учётных данных. Для подключения к кластеру можно использовать команду kubectl config use-context, а для проверки соединения — kubectl cluster-info. Поддерживается работа с несколькими кластерами одновременно путём переключения контекстов.

Основные команды

Синтаксис kubectl построен по модели kubectl [команда] [тип ресурса] [имя] [флаги]. Команды группируются по функциональному назначению:

  • Команды управления ресурсами: apply, create, delete, edit, get, describe, explain. Например, kubectl get pods выводит список подов в текущем пространстве имён, а kubectl describe pod name показывает подробную информацию о конкретном поде.
  • Команды развёртывания: scale (изменение количества реплик), rollout (управление обновлениями, включая откат к предыдущей версии), autoscale (настройка автоматического масштабирования).
  • Команды отладки: logs (просмотр журналов контейнера), exec (выполнение команды внутри запущенного контейнера), port-forward (проброс портов с локальной машины в под), cp (копирование файлов между локальной системой и контейнером).
  • Команды управления кластером: cordon и uncordon (перевод узла в режим обслуживания), drain (вытеснение подов с узла), top (просмотр загрузки узлов и подов).
  • Команды конфигурации: config (управление kubeconfig), completion (генерация скриптов автодополнения для оболочек).

Декларативный и императивный подходы

kubectl поддерживает два основных подхода к управлению ресурсами. Императивный подход предполагает выполнение конкретных команд для достижения желаемого состояния, например kubectl run nginx --image=nginx. Декларативный подход использует файлы манифестов (обычно в формате YAML), описывающие желаемое состояние объекта, и команду kubectl apply -f manifest.yaml. Декларативный подход считается предпочтительным в производственной среде, поскольку он обеспечивает воспроизводимость конфигураций и интеграцию с системами непрерывной доставки (CI/CD). Файлы манифестов хранятся в системах контроля версий, что позволяет отслеживать изменения конфигурации кластера.

Работа с ресурсами

kubectl поддерживает управление всеми типами ресурсов Kubernetes: подами, сервисами, развёртываниями (Deployment), наборами реплик (ReplicaSet), конфигурационными картами (ConfigMap), секретами, постоянными томами, пространствами имён, ролями доступа (RBAC) и другими. Для получения списка всех поддерживаемых типов ресурсов используется команда kubectl api-resources. Сокращённые имена ресурсов (например, po для подов, svc для сервисов) ускоряют ввод команд.

Пространства имён (namespaces) используются для логического разделения кластера на изолированные среды. По умолчанию kubectl работает в пространстве имён default, но его можно переопределить флагом --namespace или через контекст конфигурации.

Расширение функциональности

kubectl имеет механизм плагинов, позволяющий расширять его возможности сторонними инструментами. Плагины представляют собой исполняемые файлы с именем kubectl-<название> и вызываются как подкоманды. Например, популярный плагин kubectl krew является менеджером пакетов для установки других плагинов. Также поддерживается интеграция с инструментами визуализации, такими как Dashboard, и мониторинга, например Prometheus.

Автодополнение и псевдонимы

Для повышения эффективности работы kubectl поддерживает автодополнение команд в оболочках bash, zsh и fish. Генерация скрипта автодополнения выполняется командой kubectl completion. Многие пользователи также создают псевдонимы в оболочке, например alias k=kubectl, что сокращает время ввода часто используемых команд.

Безопасность

kubectl использует механизмы аутентификации и авторизации Kubernetes. В зависимости от конфигурации кластера применяются клиентские и серверные сертификаты, токены доступа или интеграция с внешними провайдерами идентификации (например, OIDC). Права доступа определяются политиками RBAC, которые ограничивают действия пользователя в кластере. Для повышения безопасности рекомендуется использовать отдельные контексты для разных сред (разработка, тестирование, производство) и минимизировать выдаваемые права.

Применение в практике

kubectl является стандартным инструментом для работы с Kubernetes в большинстве организаций, использующих эту платформу. Он применяется на всех этапах жизненного цикла приложений: от разработки и тестирования до эксплуатации в производственной среде. В сочетании с инструментами автоматизации (например, Ansible, Terraform) и системами CI/CD (Jenkins, GitLab CI) kubectl обеспечивает автоматизацию развёртывания и обновления приложений.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →