kubectl — консольная утилита для работы с сущностями кластера Kubernetes. При помощи нее можно управлять ресурсами кластера, разворачивать приложения, просматривать логи и выполнять другие задачи администрирования.
Обратите внимание, что минорная версия
kubectl
(вторая цифра в версии) может отличаться от версии кластера на +/- 1. При использовании более новых или более старых версий могут возникать проблемы с совместимостью. В инструкции указаны конкретные версии для примера, но вы можете заменить их на нужные вам версии.
В панели управления, на текущий момент, можно создать кластеры Kubernetes таких версий: 1.26.15, 1.27.15, 1.28.11, 1.29.6, 1.30.2.
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
Обновите список пакетов:
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
Загрузите 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
Установите 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
Установите 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
Файл config.yaml
используется kubectl
для определения, к какому кластеру подключаться и какие учетные данные использовать. Он содержит информацию о кластерах, пользователях и контекстах, что позволяет легко переключаться между различными конфигурациями Kubernetes.
Поскольку файл config.yaml
содержит важные учетные данные, его следует хранить в недоступном для посторонних лиц месте, чтобы предотвратить несанкционированный доступ к кластеру. При получении доступа к этому файлу посторонний человек может управлять кластером и его ресурсами.
Чтобы получить конфигурационный файл, перейдите на страницу управления кластером и во вкладке «Дашборд» нажмите кнопку «Скачать».
После получения файла 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
.
Если вам нужно использовать несколько файлов конфигурации или расположить 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>
После настройки доступа вам нужно убедиться, что kubectl
может подключиться к кластеру. Для этого выполните следующую команду:
kubectl cluster-info
Эта команда выведет информацию о вашем кластере, включая адреса API и других компонентов. Если команда выполнена успешно, значит, kubectl
подключен к кластеру.
Контексты позволяют переключаться между разными кластерами и учетными данными. Каждый контекст представляет собой комбинацию кластеров, пользователей и пространств имен (namespaces
).
Чтобы увидеть список доступных контекстов и узнать, какой из них активен в данный момент, используйте команду:
kubectl config get-contexts
Эта команда выведет таблицу с доступными контекстами и укажет, какой из них активен в данный момент.
Если у вас настроено несколько кластеров и вы хотите переключиться на другой контекст, используйте следующую команду:
kubectl config use-context <context-name>
Замените <context-name>
на имя нужного контекста, которое вы получили из предыдущей команды. После выполнения этой команды kubectl
будет использовать новый контекст для всех последующих команд.
Автодополнение команд помогает ускорить ввод команд и уменьшить количество ошибок, автоматически предлагая возможные варианты по мере набора команды. Это особенно полезно для длинных и сложных команд kubectl
.
Установите пакет 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 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>