Бесплатная миграция IT-инфраструктуры в облако
На главную
25eb9e0a-a5a8-472a-ace7-940b8bd2adf0
Облачные сервисы

kubectl

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

Установка kubectl

Обратите внимание, что минорная версия kubectl (вторая цифра в версии) может отличаться от версии кластера на +/- 1. При использовании более новых или более старых версий могут возникать проблемы с совместимостью. В инструкции указаны конкретные версии для примера, но вы можете заменить их на нужные вам версии.

В панели управления, на текущий момент, можно создать кластеры Kubernetes таких версий: 1.26.15, 1.27.15, 1.28.11, 1.29.6, 1.30.2

Linux

Ручная установка

  1. Загрузите бинарный файл kubectl:

curl -LO "https://storage.googleapis.com/kubernetes-release/release/v1.30.2/bin/linux/amd64/kubectl"
  1. Проверьте целостность загруженного файла: 

echo "$(curl -sL https://dl.k8s.io/release/v1.30.2/bin/linux/amd64/kubectl.sha256) kubectl" | sha256sum --check
  1. Установите kubectl

sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl

Установка через apt

  1. Обновите список пакетов: 

sudo apt update
  1. Установите необходимые пакеты: 

sudo apt install -y apt-transport-https ca-certificates curl gnupg
  1. Добавьте ключ для репозитория Kubernetes и установите правильные права доступа на ключ: 

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.30/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg && sudo chmod 644 /etc/apt/keyrings/kubernetes-apt-keyring.gpg
  1. Добавьте репозиторий Kubernetes в список источников APT и установите правильные права доступа на файл списка источников: 

echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.30/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list && sudo chmod 644 /etc/apt/sources.list.d/kubernetes.list
  1. Обновите список пакетов снова: 

sudo apt update
  1. Установите kubectl

sudo apt install -y kubectl

macOS 

Ручная установка

Для процессоров Intel
  1. Загрузите kubectl для процессоров Intel: 

curl -LO "https://dl.k8s.io/release/v1.30.2/bin/darwin/amd64/kubectl"
  1. Проверьте целостность загруженного файла: 

echo "$(curl -sL https://dl.k8s.io/release/v1.30.2/bin/darwin/amd64/kubectl.sha256) kubectl" | sha256sum --check
Для процессоров Apple Silicon
  1. Загрузите kubectl для процессоров Apple Silicon: 

curl -LO "https://dl.k8s.io/release/v1.30.2/bin/darwin/arm64/kubectl"
  1. Проверьте целостность загруженного файла: 

echo "$(curl -sL https://dl.k8s.io/release/v1.30.2/bin/darwin/arm64/kubectl.sha256) kubectl" | sha256sum --check
  1. Сделайте файл исполняемым, установите права 644, переместите его в директорию /usr/local/bin и установите владельца root

chmod +x ./kubectl && chmod 644 ./kubectl && sudo mv ./kubectl /usr/local/bin/kubectl && sudo chown root: /usr/local/bin/kubectl

Установка через homebrew

Установите kubectl

brew install kubectl@1.30

или

Установите весь набор инструментов Kubernetes CLI

brew install kubernetes-cli@1.30

В репозиториях homebrew на данный момент доступны только 1.29, 1.30 и 1.31 версии. Не стоит использовать этот метод установки для версий Kubernetes ниже 1.28 версии.

Windows

Установка через Chocolatey

Установите kubectl, выполнив: 

choco install kubernetes-cli --version=1.30.2

Ручная установка

  1. В PowerShell выполните следующие команды:

mkdir kubectl
cd .\kubectl\
curl.exe -LO "https://dl.k8s.io/release/v1.30.2/bin/windows/amd64/kubectl.exe"
  1. Добавьте путь к директории kubectl в PATH, выполнив следующий скрипт в PowerShell:

$destination="$env:USERPROFILE\kubectl"
$currentPath = [System.Environment]::GetEnvironmentVariable("Path", [System.EnvironmentVariableTarget]::User)

if ($currentPath -notlike "*$destination*") {
	[System.Environment]::SetEnvironmentVariable("Path", "$currentPath;$destination", [System.EnvironmentVariableTarget]::User)
}

Или добавьте путь вручную:

    • Нажмите правой кнопкой мыши на «Этот компьютер».

    • Выберите «Свойства».

    • Перейдите в «О программе».

    • Нажмите «Дополнительные параметры системы».

    • Перейдите на вкладку «Дополнительно».

    • Нажмите «Переменные среды».

    • В разделе «Системные переменные» найдите переменную Path и добавьте путь к директории kubectl.

  1. Перезапустите PowerShell, чтобы изменения вступили в силу.

Docker Desktop for Windows добавляет свою версию kubectl в PATH. Если у вас установлен Docker Desktop, возможно, вам потребуется разместить запись PATH для kubectl перед той, которая добавлена установщиком Docker Desktop, или удалить версию kubectl, установленную Docker Desktop.

Теперь kubectl установлен на вашем компьютере. Вы можете проверить установку, выполнив команду: 

kubectl version

Настройка доступа к кластеру Kubernetes

Получение конфигурационного файла kubeconfig

Файл config.yaml используется kubectl для определения, к какому кластеру подключаться и какие учетные данные использовать. Он содержит информацию о кластерах, пользователях и контекстах, что позволяет легко переключаться между различными конфигурациями Kubernetes. 

Поскольку файл config.yaml содержит важные учетные данные, его следует хранить в недоступном для посторонних лиц месте, чтобы предотвратить несанкционированный доступ к кластеру. При получении доступа к этому файлу посторонний человек может управлять кластером и его ресурсами.

Чтобы получить конфигурационный файл, перейдите на страницу управления кластером и во вкладке «Дашборд» нажмите кнопку «Скачать».

Selection 037

Размещение kubeconfig в домашнем каталоге

После получения файла config.yaml необходимо разместить его в правильном каталоге, чтобы kubectl мог его использовать.

macOS и Linux

  1. Создайте директорию .kube в вашем домашнем каталоге, если она еще не существует:

mkdir -p ~/.kube
  1. Скопируйте файл config.yaml в эту директорию и переименуйте его в config:

cp ~/Downloads/config.yaml ~/.kube/config

После выполнения этих шагов kubectl будет автоматически использовать конфигурацию из файла ~/.kube/config.

Windows

  1. Откройте PowerShell.

  2. Создайте директорию .kube в вашем домашнем каталоге, если она еще не существует:

mkdir $env:USERPROFILE\.kube
  1. Скопируйте файл config.yaml в эту директорию и переименуйте его в config:

copy <путь_к_config.yaml> $env:USERPROFILE\.kube\config
  1. Запустите PowerShell от имени администратора и выполните:

[Environment]::SetEnvironmentVariable("KUBECONFIG", $HOME + "\.kube\config", [EnvironmentVariableTarget]::Machine)

После выполнения этих шагов kubectl будет автоматически использовать конфигурацию из файла $env:USERPROFILE\.kube\config.

Использование переменной окружения KUBECONFIG

Если вам нужно использовать несколько файлов конфигурации или расположить config.yaml в другом месте, вы можете воспользоваться переменной окружения KUBECONFIG.

macOS и Linux

  1. Откройте терминал.

  2. Установите переменную окружения KUBECONFIG:

export KUBECONFIG=<path-to-your-kubeconfig>

Чтобы эти настройки сохранялись после перезагрузки системы, выполните следующий код (по необходимости изменив ~/.bashrc на ~/.zshrc (для MacOS) или ~/.profile):

echo "export KUBECONFIG=<path-to-your-kubeconfig>" >> ~/.bashrc

Windows

  1. Откройте PowerShell.

  2. Установите переменную окружения KUBECONFIG:

$env:KUBECONFIG = "<path-to-your-kubeconfig>"

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

Вы можете указать несколько файлов kubeconfig, разделяя их пути двоеточиями (на macOS и Linux) или точкой с запятой (на Windows):

Windows (PowerShell):

$env:KUBECONFIG="<path-to-your-first-kubeconfig>;<path-to-your-second-kubeconfig>"

macOS и Linux:

export KUBECONFIG=<path-to-your-first-kubeconfig>:<path-to-your-second-kubeconfig>

Настройка подключения к кластеру Kubernetes

После настройки доступа вам нужно убедиться, что kubectl может подключиться к кластеру. Для этого выполните следующую команду:

kubectl cluster-info

Эта команда выведет информацию о вашем кластере, включая адреса API и других компонентов. Если команда выполнена успешно, значит, kubectl подключен к кластеру.

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

Контексты позволяют переключаться между разными кластерами и учетными данными. Каждый контекст представляет собой комбинацию кластеров, пользователей и пространств имен (namespaces).

Чтобы увидеть список доступных контекстов и узнать, какой из них активен в данный момент, используйте команду:

kubectl config get-contexts

Эта команда выведет таблицу с доступными контекстами и укажет, какой из них активен в данный момент. 

Image3

Если у вас настроено несколько кластеров и вы хотите переключиться на другой контекст, используйте следующую команду:

kubectl config use-context <context-name>

Замените <context-name> на имя нужного контекста, которое вы получили из предыдущей команды. После выполнения этой команды kubectl будет использовать новый контекст для всех последующих команд.

Настройка автодополнения команд

Автодополнение команд помогает ускорить ввод команд и уменьшить количество ошибок, автоматически предлагая возможные варианты по мере набора команды. Это особенно полезно для длинных и сложных команд kubectl.

Установка bash-completion

Установите пакет bash-completion, если он еще не установлен.

Для Ubuntu/Debian:

sudo apt install bash-completion

Для CentOS/RHEL:

sudo yum install bash-completion

Для macOS через Homebrew:

brew install bash-completion

bash (Linux)

Включите автодополнение для текущего сеанса:

source <(kubectl completion bash)

Чтобы автодополнение было всегда включено, выполните команду:

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

zsh (macOS и Linux)

Включите автодополнение для текущего сеанса:

source <(kubectl completion zsh)

Чтобы автодополнение было всегда включено, выполните команду:

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

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

Получение информации о кластере

Чтобы получить общую информацию о вашем кластере, включая адреса компонентов, используйте команду:

kubectl cluster-info

Просмотр подов

Для получения списка всех подов в текущем пространстве имен используйте команду:

kubectl get pods

Если вы хотите увидеть поды в конкретном пространстве имен, добавьте опцию -n:

kubectl get pods -n <namespace>

Просмотр служб

Чтобы увидеть все службы (services) в текущем пространстве имен, выполните команду:

kubectl get services

Вы также можете указать пространство имен:

kubectl get services -n <namespace>

Просмотр конфигурации

Чтобы увидеть текущую конфигурацию и активный контекст:

kubectl config view

Описание ресурсов

Для получения детальной информации о любом ресурсе, таком как под или служба:

kubectl describe <resource-type> <resource-name>

Например, чтобы получить информацию о поде:

kubectl describe pod <pod-name>

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

Для удаления ресурса, такого как под или служба:

kubectl delete <resource-type> <resource-name>

Например, чтобы удалить под:

kubectl delete pod <pod-name>
Была ли статья полезна?
Ваша оценка очень важна
Пока нет комментариев