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>