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 →
