kubectl — консольная утилита для работы с сущностями кластера Kubernetes. При помощи нее можно управлять ресурсами кластера, разворачивать приложения, просматривать логи и выполнять другие задачи администрирования.
Установка kubectl
Обратите внимание, что минорная версия
kubectl(вторая цифра в версии) может отличаться от версии кластера на +/- 1. При использовании более новых или более старых версий могут возникать проблемы с совместимостью. В инструкции указаны конкретные версии для примера, но вы можете заменить их на нужные вам версии.
Linux
Ручная установка
-
Загрузите бинарный файл
kubectl:
curl -LO "https://storage.googleapis.com/kubernetes-release/release/v1.30.2/bin/linux/amd64/kubectl"
-
Проверьте целостность загруженного файла:
echo "$(curl -sL https://dl.k8s.io/release/v1.30.2/bin/linux/amd64/kubectl.sha256) kubectl" | sha256sum --check
-
Установите
kubectl:
sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
Установка через apt
-
Обновите список пакетов:
sudo apt update
-
Установите необходимые пакеты:
sudo apt install -y apt-transport-https ca-certificates curl gnupg
-
Добавьте ключ для репозитория 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
-
Добавьте репозиторий 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
-
Обновите список пакетов снова:
sudo apt update
-
Установите
kubectl:
sudo apt install -y kubectl
macOS
Ручная установка
Для процессоров Intel-
Загрузите
kubectlдля процессоров Intel:
curl -LO "https://dl.k8s.io/release/v1.30.2/bin/darwin/amd64/kubectl"
-
Проверьте целостность загруженного файла:
echo "$(curl -sL https://dl.k8s.io/release/v1.30.2/bin/darwin/amd64/kubectl.sha256) kubectl" | sha256sum --check
Для процессоров Apple Silicon
-
Загрузите
kubectlдля процессоров Apple Silicon:
curl -LO "https://dl.k8s.io/release/v1.30.2/bin/darwin/arm64/kubectl"
-
Проверьте целостность загруженного файла:
echo "$(curl -sL https://dl.k8s.io/release/v1.30.2/bin/darwin/arm64/kubectl.sha256) kubectl" | sha256sum --check
-
Сделайте файл исполняемым, установите права
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, вы можете найти на официальной странице утилиты.
Windows
Установка через Chocolatey
Установите kubectl, выполнив:
choco install kubernetes-cli --version=1.30.2
Ручная установка
-
В PowerShell выполните следующие команды:
mkdir kubectl
cd .\kubectl\
curl.exe -LO "https://dl.k8s.io/release/v1.30.2/bin/windows/amd64/kubectl.exe"
-
Добавьте путь к директории
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.
-
-
Перезапустите 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 содержит важные учетные данные, его следует хранить в недоступном для посторонних лиц месте, чтобы предотвратить несанкционированный доступ к кластеру. При получении доступа к этому файлу посторонний человек может управлять кластером и его ресурсами.
Чтобы получить конфигурационный файл, перейдите на страницу управления кластером и во вкладке «Дашборд» нажмите ссылку «скачайте файл конфигурации».

Размещение kubeconfig в домашнем каталоге
После получения файла config.yaml необходимо разместить его в правильном каталоге, чтобы kubectl мог его использовать.
macOS и Linux
-
Создайте директорию
.kubeв вашем домашнем каталоге, если она еще не существует:
mkdir -p ~/.kube
-
Скопируйте файл
config.yamlв эту директорию и переименуйте его вconfig:
cp ~/Downloads/config.yaml ~/.kube/config
После выполнения этих шагов kubectl будет автоматически использовать конфигурацию из файла ~/.kube/config.
Windows
-
Откройте PowerShell.
-
Создайте директорию
.kubeв вашем домашнем каталоге, если она еще не существует:
mkdir $env:USERPROFILE\.kube
-
Скопируйте файл
config.yamlв эту директорию и переименуйте его вconfig:
copy <путь_к_config.yaml> $env:USERPROFILE\.kube\config
-
Запустите PowerShell от имени администратора и выполните:
[Environment]::SetEnvironmentVariable("KUBECONFIG", $HOME + "\.kube\config", [EnvironmentVariableTarget]::Machine)
После выполнения этих шагов kubectl будет автоматически использовать конфигурацию из файла $env:USERPROFILE\.kube\config.
Использование переменной окружения KUBECONFIG
Если вам нужно использовать несколько файлов конфигурации или расположить config.yaml в другом месте, вы можете воспользоваться переменной окружения KUBECONFIG.
macOS и Linux
-
Откройте терминал.
-
Установите переменную окружения
KUBECONFIG:
export KUBECONFIG=<path-to-your-kubeconfig>
Чтобы эти настройки сохранялись после перезагрузки системы, выполните следующий код (по необходимости изменив ~/.bashrc на ~/.zshrc (для MacOS) или ~/.profile):
echo "export KUBECONFIG=<path-to-your-kubeconfig>" >> ~/.bashrc
Windows
-
Откройте PowerShell.
-
Установите переменную окружения
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
Эта команда выведет таблицу с доступными контекстами и укажет, какой из них активен в данный момент.

Если у вас настроено несколько кластеров и вы хотите переключиться на другой контекст, используйте следующую команду:
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>