Подключение к кластеру и работа с kubectl

После создания кластера к нему можно подключиться с помощью kubectl – консольного инструмента для управления Kubernetes. Через kubectl вы можете создавать и удалять ресурсы, просматривать состояние кластера, читать логи приложений и выполнять другие операции.

Если вы не знакомы с основными понятиями Kubernetes – начните со статьи “Основы Kubernetes”.

Установка kubectl

Linux (Ubuntu и другие дистрибутивы)

Установка kubectl на Ubuntu и другие Linux-дистрибутивы:

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

macOS

Через Homebrew (менеджер пакетов):

brew install kubectl

Или вручную (Apple Silicon):

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

Windows

Установка kubectl на Windows через winget (менеджер пакетов):

winget install Kubernetes.kubectl

Или вручную: скачайте исполняемый файл со страницы релизов и добавьте путь к нему в переменную окружения PATH.

Проверка установки

kubectl version --client

Ожидаемый вывод:

Client Version: v1.xx.x
Kustomize Version: v5.x.x

Получение kubeconfig

kubeconfig – это конфигурационный файл, в котором содержатся данные для аутентификации и адрес API-сервера (интерфейс программирования приложения) вашего Kubernetes cloud-кластера (облачного кластера). Без него kubectl не сможет подключиться к кластеру.

Чтобы скачать kubeconfig:

  1. Перейдите в дашборд (приборную панель) созданного кластера
  2. В карточке “Информация” нажмите “Подключиться”
  3. В открывшемся окне нажмите “Скачать kubeconfig”
  4. Сохраните файл на локальную машину

Первое подключение

Выполните команду для проверки соединения:

kubectl --kubeconfig kubeconfig.yaml get nodes

Если подключение прошло успешно, вы увидите список нод (серверов) вашего K8s-кластера:

NAME                                    STATUS   ROLES    AGE   VERSION
dc5bca-client-c31fdf-xkd6w-jqpnc       Ready    <none>   2m    v1.xx.x
dc5bca-client-c31fdf-xkd6w-rq847       Ready    <none>   70s   v1.xx.x\

Статус Ready означает, что ноды работают и готовы принимать нагрузку. Если у ноды статус NotReady – скорее всего, ноде не хватает ресурсов. В этом случае обратитесь в техническую поддержку для диагностики.

Настройка kubectl для удобной работы

Переменная окружения KUBECONFIG

Чтобы не указывать --kubeconfig в каждой команде, задайте путь к файлу через переменную окружения:

export KUBECONFIG=/path/to/kubeconfig.yaml

После этого kubectl будет использовать указанный файл автоматически:

kubectl get nodes

Чтобы настройка сохранялась между сессиями, добавьте строку export KUBECONFIG=... в файл ~/.bashrc (Linux) или ~/.zshrc (macOS).

Перемещение в стандартное расположение

Альтернативный способ – переместить kubeconfig в стандартную директорию kubectl:

mkdir -p ~/.kube
cp kubeconfig.yaml ~/.kube/config

kubectl автоматически ищет конфигурацию в ~/.kube/config, если переменная KUBECONFIG не задана.

Работа с несколькими кластерами

Если у вас несколько кластеров, вы можете объединить их kubeconfig-файлы и переключаться между ними через контексты.

Просмотр доступных контекстов:

kubectl config get-contexts

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

kubectl config use-context <имя-контекста>

Для объединения нескольких kubeconfig-файлов:

export KUBECONFIG=~/.kube/config:/path/to/second-kubeconfig.yaml
kubectl config view --merge --flatten > ~/.kube/merged-config
mv ~/.kube/merged-config ~/.kube/config

Базовые команды kubectl

Ниже приведены основные kubectl-команды для повседневной работы с кластером.

Просмотр ресурсов

# Список нод кластера
kubectl get nodes

# Список подов во всех namespace
kubectl get pods --all-namespaces

# Список подов в конкретном namespace
kubectl get pods -n my-namespace

# Подробная информация о поде
kubectl describe pod <имя-пода>

# Список сервисов
kubectl get svc

# Список всех ресурсов в namespace
kubectl get all -n my-namespace

Создание и применение ресурсов

# Применить манифест из файла
kubectl apply -f manifest.yaml

# Применить все манифесты из директории
kubectl apply -f ./manifests/

# Создать namespace
kubectl create namespace my-app

Логи и отладка

# Логи пода
kubectl logs <имя-пода>

# Логи с отслеживанием в реальном времени
kubectl logs -f <имя-пода>

# Логи конкретного контейнера в поде
kubectl logs <имя-пода> -c <имя-контейнера>

# Выполнить команду внутри пода
kubectl exec -it <имя-пода> -- /bin/sh

Удаление ресурсов

# Удалить ресурс по манифесту
kubectl delete -f manifest.yaml

# Удалить под
kubectl delete pod <имя-пода>

# Удалить все поды в namespace
kubectl delete pods --all -n my-namespace

Полезные флаги

  • -o wide – расширенный вывод с дополнительными колонками
  • -o yaml – вывод в формате YAML (язык для хранения информации)
  • -o json – вывод в формате JSON (текстовый формат обмена данными)
  • -w / --watch – отслеживать изменения в реальном времени
  • -n <namespace> – указать namespace (пространство имен, по умолчанию – default)

Пример:

kubectl get pods -o wide -w

Автодополнение команд

kubectl поддерживает автодополнение для bash и zsh.

bash

echo 'source <(kubectl completion bash)' >> ~/.bashrc
source ~/.bashrc

zsh

echo 'source <(kubectl completion zsh)' >> ~/.zshrc
source ~/.zshrc

После настройки нажимайте “Tab” для автодополнения команд, имен ресурсов и флагов.

Все статьи раздела

  1. Kubernetes (K8s) – обзор сервиса Managed Kubernetes (управляемый Kubernetes)
  2. Основы Kubernetes – ключевые понятия: кластер, ноды, поды, сервисы
  3. Создание и настройка кластера – конфигурация master-нод, сеть и worker-группы
  4. Подключение к кластеру и работа с kubectl – вы здесь
  5. Управление кластером – добавление нод, изменение конфигурации, обновление, удаление
  6. Сеть и балансировщик нагрузки – сетевая модель, внешние и внутренние балансировщики
  7. Лимиты, квоты и ограничения – ограничения платформы, что можно и нельзя изменить

Если возникнут вопросы, напишите нам, пожалуйста, обращение в панели управления аккаунта (раздел “Помощь и поддержка”), а если вы захотите обсудить эту статью или наши продукты с коллегами по цеху и сотрудниками Beget – ждем вас в нашем сообществе в Telegram.