Инструмент командной строки Kubernetes kubectl позволяет запускать команды для кластеров Kubernetes. Вы можете использовать kubectl для развертывания приложений, проверки и управления ресурсов кластера, а также для просмотра логов. Полный список возможных операций для kubectl смотрите в Обзоре kubectl.
Подготовка к работе
Используемая вами мажорная версия kubectl не должна отличаться от той, которая используется в кластере. Например, версия v1.2 может работать с версиями v1.1, v1.2 и v1.3. Использование последней версии kubectl поможет избежать непредвиденных проблем.
Установка kubectl в Linux
Установка бинарного файла kubectl с помощью curl в Linux
-
Загрузите последнюю версию с помощью команды:
curl -LO https://dl.k8s.io/release/`curl -LS https://dl.k8s.io/release/stable.txt`/bin/linux/amd64/kubectl
Чтобы загрузить определенную версию, вставьте в фрагмент команды
$(curl -LS https://dl.k8s.io/release/stable.txt)
нужную версию.Например, команда загрузки версии 1.33.0 для Linux будет выглядеть следующим образом:
curl -LO https://dl.k8s.io/release/v1.33.0/bin/linux/amd64/kubectl
-
Сделайте бинарный файл kubectl исполняемым:
chmod +x ./kubectl
-
Переместите бинарный файл в директорию из переменной окружения PATH:
sudo mv ./kubectl /usr/local/bin/kubectl
-
Убедитесь, что установлена последняя версия:
kubectl version --client
Установка с помощью встроенного пакетного менеджера
- Ubuntu, Debian или HypriotOS
- CentOS, RHEL или Fedora
sudo apt-get update && sudo apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl
sudo cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
sudo yum install -y kubectl
Установка с помощью стороннего пакетного менеджера
- Snap
- Homebrew
Если вы используете Ubuntu или другой Linux-дистрибутив, в котором есть пакетный менеджер snap, kubectl доступен в виде приложения snap.
snap install kubectl --classic
kubectl version
Если вы работаете в Linux и используете пакетный менеджер Homebrew, то kubectl можно установить через него.
brew install kubectl
kubectl version
Установка kubectl в macOS
Установка бинарного файла kubectl с помощью curl в macOS
-
Загрузите последнюю версию:
curl -LO "https://dl.k8s.io/release/$(curl -LS https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
Чтобы загрузить определенную версию, вставьте в фрагмент команды
$(curl -LS https://dl.k8s.io/release/stable.txt)
нужную версию.Например, команда загрузки версии 1.33.0 для macOS будет выглядеть следующим образом:
curl -LO https://dl.k8s.io/release/v1.33.0/bin/darwin/amd64/kubectl
-
Сделайте бинарный файл kubectl исполняемым:
chmod +x ./kubectl
-
Переместите бинарный файл в директорию из переменной окружения PATH:
sudo mv ./kubectl /usr/local/bin/kubectl
-
Убедитесь, что установлена последняя версия:
kubectl version --client
Установка с помощью Homebrew в macOS
Если вы используете macOS и Homebrew, то kubectl можно установить с помощью пакетного менеджера Homebrew.
-
Выполните команду установки:
brew install kubectl
Или:
brew install kubernetes-cli
-
Убедитесь, что установлена последняя версия:
kubectl version --client
Установка с помощью Macports в macOS
Если вы используйте macOS и Macports, то kubectl можно установить с помощью пакетного менеджера Macports.
-
Выполните команду установки:
sudo port selfupdate sudo port install kubectl
-
Убедитесь, что установлена последняя версия:
kubectl version --client
Установка kubectl в Windows
Установка бинарного файла kubectl с помощью curl в Windows
-
Загрузите последнюю версию 1.33.0 по этой ссылке.
Либо, если у вас установлен
curl
, выполните команду ниже:curl -LO https://dl.k8s.io/release/v1.33.0/bin/windows/amd64/kubectl.exe
Последнюю стабильную версию (например, при написании скриптов) вы можете узнать из файла по ссылке https://dl.k8s.io/release/stable.txt.
-
Переместите бинарный файл в директорию из переменной окружения PATH:
-
Убедитесь, что версия
kubectl
соответствует загружённой:kubectl version --client
Установка с помощью Powershell из PSGallery
Если вы работаете в Windows и используете менеджер пакетов Powershell Gallery, вы можете установить и обновить kubectl с помощью Powershell.
-
Выполните команды по установке (обязательно укажите
DownloadLocation
):Install-Script -Name install-kubectl -Scope CurrentUser -Force install-kubectl.ps1 [-DownloadLocation <path>]
Установщик создаст
$HOME/.kube
вместе с конфигурационным файлом. -
Убедитесь, что установлена последняя версия:
kubectl version --client
Установка в Windows с помощью Chocolatey или Scoop
Для установки kubectl в Windows вы можете использовать либо менеджер пакетов Chocolatey, либо установщик в командной строке Scoop.
- choco
- scoop
choco install kubernetes-cli
-
Убедитесь, что установлена последняя версия:
kubectl version --client
-
Перейдите в домашнюю директорию:
cd %USERPROFILE%
-
Создайте директорию
.kube
:mkdir .kube
-
Перейдите в созданную только что директорию
.kube
:cd .kube
-
Настройте kubectl, чтобы было возможно использовать удаленный кластер Kubernetes:
New-Item config -type file
Установка kubectl из SDK Google Cloud
Вы можете использовать kubectl из SDK Google Cloud, который использует этот CLI-инструмент.
-
Установите Google Cloud SDK.
-
Выполните команду для установки
kubectl
:gcloud components install kubectl
-
Убедитесь, что установлена последняя версия:
kubectl version --client
Проверка конфигурации kubectl
Чтобы kubectl мог найти и получить доступ к кластеру Kubernetes, нужен файл kubeconfig, который создаётся автоматически при создании кластера с помощью скрипта kube-up.sh или при успешном развертывании кластера Minikube. По умолчанию конфигурация kubectl находится в ~/.kube/config
.
Посмотрите на состояние кластера, чтобы убедиться, что kubectl правильно сконфигурирован:
Если вы видите URL в ответ, значит kubectl корректно настроен для работы с вашим кластером.
Если вы видите сообщение следующего содержания, то значит kubectl настроен некорректно или не может подключиться к кластеру Kubernetes:
The connection to the server <server-name:port> was refused - did you specify the right host or port?
Например, если вы собираетесь запустить кластер Kubernetes на своем ноутбуке (локально), вам потребуется сначала установить специальный для этого инструмент, например Minikube, а затем снова выполнить указанные выше команды.
Если команда kubectl cluster-info
возвращает URL в ответ, но вы не можете подключиться к своему кластеру, чтобы убедиться, что он правильно настроен, воспользуйтесь этой командой:
kubectl cluster-info dump
Дополнительная конфигурация kubectl
Включение автодополнения ввода shell
kubectl поддерживает автодополнение (автозаполнение) ввода в Bash и Zsh, которое сэкономит вам много времени на набор команд.
Ниже приведены инструкции по настройке автодополнения для Bash (для Linux и macOS) и Zsh.
- Bash в Linux
- Bash в macOS
- Zsh
Основные сведения
Скрипт дополнения ввода kubectl для Bash может быть сгенерирован с помощью команды kubectl completion bash
. Подключение скрипта дополнения ввода в вашу оболочку включает поддержку автозаполнения ввода для kubectl.
Однако скрипт дополнения ввода зависит от bash-completion, поэтому вам нужно сначала установить этот пакет (вы можете выполнить команду type _init_completion
, чтобы проверить, установлен ли у вас уже bash-completion).
Установка bash-completion
bash-completion можно установить через многие менеджеры пакеты (см. здесь). Вы можете установить его с помощью apt-get install bash-completion
или yum install bash-completion
и т.д.
Приведенные выше команды создадут файл /usr/share/bash-completion/bash_completion
, который является основным скриптом bash-completion. Возможно, вам потребуется вручную подключить этот файл в ~/.bashrc
(необходимость выполнять эту операцию зависит от используемого менеджера пакетов).
Чтобы убедиться, что всё работает, перезагрузите оболочку и выполните команду type _init_completion
. Если команда отработала успешно, установка сделана правильно, в противном случае добавьте следующее содержимое в файл ~/.bashrc
:
source /usr/share/bash-completion/bash_completion
Перезагрузите вашу оболочку и убедитесь, что bash-completion правильно установлен, выполнив команду type _init_completion
.
Включение автодополнения ввода kubectl
Теперь нужно убедиться, что скрипт дополнения ввода kubectl выполняется во всех сессиях командной оболочки. Есть два способа сделать это:
-
Добавьте запуск скрипта дополнения ввода в файл
~/.bashrc
:echo 'source <(kubectl completion bash)' >>~/.bashrc
-
Добавьте скрипт дополнения ввода в директорию
/etc/bash_completion.d
:kubectl completion bash >/etc/bash_completion.d/kubectl
-
Если у вас определён псевдоним для kubectl, вы можете интегрировать его с автодополнением оболочки:
echo 'alias k=kubectl' >>~/.bashrc echo 'complete -F __start_kubectl k' >>~/.bashrc
Оба подхода эквивалентны. После перезагрузки вашей оболочки автодополнение ввода для kubectl должно работать.
Основные сведения
Скрипт дополнения ввода kubectl для Bash может быть сгенерирован с помощью команды kubectl completion bash
. Подключение скрипта дополнения ввода в вашей оболочке включает поддержку автозаполнения ввода для kubectl.
Однако скрипт дополнения ввода kubectl зависит от пакета bash-completion, который первым делом нужно установить.
Установка bash-completion
Вы можете проверить, установлен ли у вас bash-completion v2, набрав команду type _init_completion
. Если он не установлен, вы можете сделать это с помощью Homebrew:
brew install bash-completion@2
Как указано в выводе этой команды, добавьте следующий код в файл ~/.bashrc
:
export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d"
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"
Перезагрузите вашу командную оболочку и убедитесь, что bash-completion v2 корректно установлен, выполнив команду type _init_completion
.
Включение автодополнения ввода kubectl
Теперь нужно убедиться, что скрипт дополнения ввода kubectl выполняется во всех сессиях командной оболочки. Есть два способа сделать это:
-
Добавьте запуск скрипта дополнения ввода в файл
~/.bashrc
:echo 'source <(kubectl completion bash)' >>~/.bashrc
-
Добавьте скрипт дополнения ввода в директорию
/etc/bash_completion.d
:kubectl completion bash >/usr/local/etc/bash_completion.d/kubectl
-
Если у вас определён псевдоним для kubectl, вы можете интегрировать его с автодополнением оболочки:
echo 'alias k=kubectl' >>~/.bashrc echo 'complete -F __start_kubectl k' >>~/.bashrc
Если вы установили kubectl с помощью Homebrew (как описано выше), то скрипт дополнения ввода kubectl уже должен быть находится в /usr/local/etc/bash_completion.d/kubectl
. В этом случае вам не нужно ничего делать.
Какой бы вариант вы ни выбрали, после перезагрузки командной оболочки автодополнение ввода для kubectl должно заработать.
Скрипт дополнения ввода kubectl для Zsh может быть сгенерирован с помощью команды kubectl completion zsh
. Подключение скрипта дополнения ввода в вашу оболочку включает поддержку автодополнения ввода для kubectl.
Чтобы подключить его во все сессии командной оболочки, добавьте следующую строчку в файл ~/.zshrc
:
source <(kubectl completion zsh)
Если у вас определён псевдоним для kubectl, вы можете интегрировать его с автодополнением оболочки:
echo 'alias k=kubectl' >>~/.zshrc
echo 'compdef __start_kubectl k' >>~/.zshrc
После перезагрузки командной оболочки должны появляться дополнения ввода kubectl.
Если появляется ошибка complete:13: command not found: compdef
, то добавьте следующее содержимое в начало вашего файла ~/.zshrc
:
autoload -Uz compinit
compinit
Что дальше
- Установка Minikube.
- Смотрите руководства по установке, чтобы узнать больше про создание кластеров.
- Научитесь запускать и делать доступным приложение.
- Если вам нужен доступ к кластеру, созданный не вами, посмотрите страницу Configure Access to Multiple Clusters.
- Читайте референсную документацию kubectl.
Before you begin
You must use a kubectl version that is within one minor version difference of
your cluster. For example, a v1.33 client can communicate
with v1.32, v1.33,
and v1.34 control planes.
Using the latest compatible version of kubectl helps avoid unforeseen issues.
Install kubectl on Windows
The following methods exist for installing kubectl on Windows:
- Install kubectl binary on Windows (via direct download or curl)
- Install on Windows using Chocolatey, Scoop, or winget
Install kubectl binary on Windows (via direct download or curl)
-
You have two options for installing kubectl on your Windows device
-
Direct download:
Download the latest 1.33 patch release binary directly for your specific architecture by visiting the Kubernetes release page. Be sure to select the correct binary for your architecture (e.g., amd64, arm64, etc.).
-
Using curl:
If you have
curl
installed, use this command:curl.exe -LO "https://dl.k8s.io/release/v1.33.0/bin/windows/amd64/kubectl.exe"
-
-
Validate the binary (optional)
Download the
kubectl
checksum file:curl.exe -LO "https://dl.k8s.io/v1.33.0/bin/windows/amd64/kubectl.exe.sha256"
Validate the
kubectl
binary against the checksum file:-
Using Command Prompt to manually compare
CertUtil
‘s output to the checksum file downloaded:CertUtil -hashfile kubectl.exe SHA256 type kubectl.exe.sha256
-
Using PowerShell to automate the verification using the
-eq
operator to
get aTrue
orFalse
result:$(Get-FileHash -Algorithm SHA256 .\kubectl.exe).Hash -eq $(Get-Content .\kubectl.exe.sha256)
-
-
Append or prepend the
kubectl
binary folder to yourPATH
environment variable. -
Test to ensure the version of
kubectl
is the same as downloaded:Or use this for detailed view of version:
kubectl version --client --output=yaml
Install on Windows using Chocolatey, Scoop, or winget
-
To install kubectl on Windows you can use either Chocolatey
package manager, Scoop command-line installer, or
winget package manager.- choco
- scoop
- winget
choco install kubernetes-cli
winget install -e --id Kubernetes.kubectl
-
Test to ensure the version you installed is up-to-date:
-
Navigate to your home directory:
# If you're using cmd.exe, run: cd %USERPROFILE% cd ~
-
Create the
.kube
directory: -
Change to the
.kube
directory you just created: -
Configure kubectl to use a remote Kubernetes cluster:
New-Item config -type file
Verify kubectl configuration
In order for kubectl to find and access a Kubernetes cluster, it needs a
kubeconfig file,
which is created automatically when you create a cluster using
kube-up.sh
or successfully deploy a Minikube cluster.
By default, kubectl configuration is located at ~/.kube/config
.
Check that kubectl is properly configured by getting the cluster state:
If you see a URL response, kubectl is correctly configured to access your cluster.
If you see a message similar to the following, kubectl is not configured correctly
or is not able to connect to a Kubernetes cluster.
The connection to the server <server-name:port> was refused - did you specify the right host or port?
For example, if you are intending to run a Kubernetes cluster on your laptop (locally),
you will need a tool like Minikube to be installed first and then re-run the commands stated above.
If kubectl cluster-info
returns the url response but you can’t access your cluster,
to check whether it is configured properly, use:
kubectl cluster-info dump
Troubleshooting the ‘No Auth Provider Found’ error message
In Kubernetes 1.26, kubectl removed the built-in authentication for the following cloud
providers’ managed Kubernetes offerings. These providers have released kubectl plugins
to provide the cloud-specific authentication. For instructions, refer to the following provider documentation:
- Azure AKS: kubelogin plugin
- Google Kubernetes Engine: gke-gcloud-auth-plugin
(There could also be other reasons to see the same error message, unrelated to that change.)
Optional kubectl configurations and plugins
Enable shell autocompletion
kubectl provides autocompletion support for Bash, Zsh, Fish, and PowerShell,
which can save you a lot of typing.
Below are the procedures to set up autocompletion for PowerShell.
The kubectl completion script for PowerShell can be generated with the command kubectl completion powershell
.
To do so in all your shell sessions, add the following line to your $PROFILE
file:
kubectl completion powershell | Out-String | Invoke-Expression
This command will regenerate the auto-completion script on every PowerShell start up. You can also add the generated script directly to your $PROFILE
file.
To add the generated script to your $PROFILE
file, run the following line in your powershell prompt:
kubectl completion powershell >> $PROFILE
After reloading your shell, kubectl autocompletion should be working.
Install kubectl convert
plugin
A plugin for Kubernetes command-line tool kubectl
, which allows you to convert manifests between different API
versions. This can be particularly helpful to migrate manifests to a non-deprecated api version with newer Kubernetes release.
For more info, visit migrate to non deprecated apis
-
Download the latest release with the command:
curl.exe -LO "https://dl.k8s.io/release/v1.33.0/bin/windows/amd64/kubectl-convert.exe"
-
Validate the binary (optional).
Download the
kubectl-convert
checksum file:curl.exe -LO "https://dl.k8s.io/v1.33.0/bin/windows/amd64/kubectl-convert.exe.sha256"
Validate the
kubectl-convert
binary against the checksum file:-
Using Command Prompt to manually compare
CertUtil
‘s output to the checksum file downloaded:CertUtil -hashfile kubectl-convert.exe SHA256 type kubectl-convert.exe.sha256
-
Using PowerShell to automate the verification using the
-eq
operator to get
aTrue
orFalse
result:$($(CertUtil -hashfile .\kubectl-convert.exe SHA256)[1] -replace " ", "") -eq $(type .\kubectl-convert.exe.sha256)
-
-
Append or prepend the
kubectl-convert
binary folder to yourPATH
environment variable. -
Verify the plugin is successfully installed.
If you do not see an error, it means the plugin is successfully installed.
-
After installing the plugin, clean up the installation files:
del kubectl-convert.exe del kubectl-convert.exe.sha256
What’s next
- Install Minikube
- See the getting started guides for more about creating clusters.
- Learn how to launch and expose your application.
- If you need access to a cluster you didn’t create, see the
Sharing Cluster Access document. - Read the kubectl reference docs
Введение
Если вы когда-либо работали с кластерами Kubernetes, то знаете, что kubectl — самый незаменимый и, пожалуй, популярный инструмент для работы с кластерами. В этой статье мы разберем, как установить и настроить kubectl для комфортной и эффективной работы с k8s.
Что такое kubectl
Kubectl — это консольная утилита, которую авторы Kubernetes предоставляют для работы с объектами кластера. С помощью этой утилиты вы можете оценивать состояние кластера, разворачивать приложения и сервисы, управлять ресурсами кластера, смотреть логи. Это неполный список возможностей утилиты: чтобы перечислить все, понадобится отдельная статья.
Компоненты Kubernetes
Строго говоря, kubectl — ничто иное, как клиент Kubernetes API, главного механизма взаимодействия человека с кластером. Kubernetes API — это HTTP REST API, а значит, любое действие с кластером можно выполнить при помощи стандартных HTTP-запросов. Так, например, мы можем создать ресурс ReplicaSet, описанный в файле replicaset.yml двумя способами:
- командой:
kubectl create -f replicaset.yaml
- HTTP-запросом к API кластера.
POST 10.0.0.10/apis/apps/v1/namespaces/{namespace}/replicasets
Оба способа помогут обратиться к API кластера. Но чтобы использовать kubectl, не придется читать документацию API и искать нужную конечную точку для запроса.
Что происходит внутри кластера?
Kubernetes состоит из большого количества независимых компонентов, распределенных по узлам кластера и выполняющих отдельные задачи. Компоненты могут находиться как на одном узле кластера, так и распределены по нескольким узлам.
Самые важные компоненты Kubernetes
- хранилище (как правило, etcd), которое содержит определение всех ресурсов кластера;
- API-сервер — основной элемент управления кластером, предоставляет API для работы с кластером и хранилищем;
- менеджер или диспетчер контроллеров — компонент, который запускает процессы контроллера. Kube-controller-manager следит за тем, чтобы в кластере были запущены нужные контроллеры (узла, репликации, учетных записей и токенов и другие);
- планировщик отслеживает поды без узла и выбирает узел, на котором они впоследствии будут работать;
- Kubelet — агент, который есть на каждом узле кластера. Кублет следит за тем, чтобы запустились все контейнеры, которые должны быть запущены.
Что происходит внутри кластера
- После выполнения команды kubectl create -f replicaset.yaml со стороны API-сервера kubernetes определение ресурса ReplicaSet сохраняется в хранилище.
- В диспетчере контроллеров запускается контроллер ресурса ReplicaSet. Он проверяет, есть ли в хранилище определения подов для ресурса. Так как в нашем примере создание ресурса выполняется впервые, определения подов в хранилище еще нет.
- Контроллер создает определение пода для каждой реплики, они также сохраняются в хранилище.
- Запускается планировщик. Он проверяет, есть ли поды, не назначенные на конкретные ноды.
- Планировщик распределяет поды по нодам и записывает выбранную ноду в определения подов в хранилище.
- На рабочей ноде кластера запускается kubelet. Он считывает определения подов из хранилища и запускает их на рабочей ноде.
Установка kubectl
Разработчики рекомендуют использовать последнюю версию утилиты и регулярно ее обновлять. Это поможет избежать проблем с совместимостью kubectl с кластером, к которому производится подключение. Узнать последнюю актуальную версию утилиты вы можете из файла.
Установка kubectl в linux
Установку в операционных системах на базе ядра linux можно произвести несколькими способами.
Установка kubectl c помощью curl
Для установки средствами curl потребуется выполнить команду:
curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
После этого необходимо сделать файл исполняемым и переместить его в директорию из переменной PATH:
chmod +x ./kubectl && sudo mv ./kubectl /usr/local/bin/kubectl
После этого вы можете проверить версию установленной утилиты, выполнив команду:
kubectl version --client
Установка kubectl c помощью встроенного пакетного менеджера
Kubectl также можно установить, используя встроенные в ОС пакетные менеджеры.
Для установки в операционных системах RHEL, Fedora и CentOS потребуется выполнить команды:
sudo cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF
sudo yum install -y kubectl
После этого можем проверить, что все установилось корректно. Выполняем команду:
kubectl version --client
Теперь проверим установку с помощью встроенного пакетного менеджера в Debian-like операционных системах: Debian, Ubuntu, а также Linux Mint и HypriotOS.
Для установки выполните следующие команды:
sudo apt-get update && sudo apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee -a /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install -y kubectl
Проверяем, все ли установилось как надо:
kubectl version --client
Установка при помощи стороннего менеджера
Также kubectl можно установить с помощью snap и homebrew.
Для установки через snap, необходимо выполнить команду:
snap install kubectl --classic
kubectl version
Для установки через homebrew, в свою очередь, это будут команды:
brew install kubectl
kubectl version
Установка kubectl в MacOS
У пользователей MacOS установка kubectl тоже не вызовет трудностей. Установить утилиту можно несколькими способами. Рассмотрим их подробнее.
Установка бинарного файла kubectl в MacOS средствами curl
Для установки при помощи curl вам необходимо выполнить несколько действий:
- загрузить последнюю версию kubectl,
curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl"
- сделать загруженный файл исполняемым и переместить его в директорию PATH;
chmod +x ./kubectl && sudo mv ./kubectl /usr/local/bin/kubectl
- проверить, все ли работает корректно и установлена ли последняя версия утилиты.
kubectl version --client
Установка с помощью Homebrew или Macports в MacOS
С помощью этих пакетных менеджеров установить kubectl еще легче.
- Если вы используете Homebrew, выполните одну из двух команд:
brew install kubernetes-cli
или
brew install kubectl
- Для установки через Macports выполните следующие команды:
sudo port selfupdate
sudo port install kubectl
Проверяем, корректно ли установлена утилита:
kubectl version --client
Установка kubectl в Windows
Установка kubectl с помощью curl в Windows
На момент написания этой статьи актуальная версия kubectl — v1.25.0. Вы можете скачать её или воспользоваться утилитой curl:
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.25.0/bin/windows/amd64/kubectl.exe
После скачивания переместите .exe файл в папку из переменной PATH.
Теперь можно проверять, все ли установилось корректно:
kubectl version --client
Установка из PSGallery при помощи PowerShell
Если при работе с PowerShell вы используете PowerShell Gallery, вы можете установить kubectl, выполнив эти команды:
Install-Script -Name install-kubectl -Scope CurrentUser -Force
install-kubectl.ps1 [-DownloadLocation <path>]
Проверяем, что все прошло как надо и утилита установилась правильно:
kubectl version --client
Дополнительно отметим, что этими же командами можно обновить уже установленную ранее утилиту kubectl.
Установка с помощью пакетных менеджеров Chocolatey и Scoop
Если для установки программных пакетов вы используете пакетные менеджеры Chocolatey или Scoop, вы можете установить kubectl с их помощью.
Команда для установки с помощью Chocolatey будет выглядеть так:
choco install kubernetes-cli
Для установки с помощью scoop выполните команду:
scoop install kubectl
После этого проверяем, что kubectl установлен:
kubectl version --client
Далее необходимо перейти в вашу домашнюю директорию:
cd %USERPROFILE%
После этого вам нужно создать папку «.kube» и перейти в нее:
mkdir .kube
cd .kube
Потом настраиваем kubectl для доступа к вашему кластеру:
New-Item config -type file
Проверка конфигурации kubectl
Чтобы подключиться к вашему кластеру, понадобится файл kubeconfig, который создается при разворачивании кластера скриптом kube-up.sh или при создании кластера средствами minikube. Директорией по умолчанию для файла kubeconfig будет ~/.kube/config.
Убедиться в том, что kubectl был сконфигурирован корректно, можно, выполнив команду:
kubectl cluster-info
Если все настроено корректно, ответ kubectl будет содержать сообщение вида:
Kubernetes control plane is running at https://10.0.0.33:8443
KubeDNS is running at https://10.0.0.33:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
Если настройка kubectl была произведена с ошибками, вы получите такое сообщение:
The connection to the server <server-name:port> was refused - did you specify the right host or port?
Настройка и эффективное использование kubectl
Для более комфортной работы с утилитой kubectl мы рекомендуем провести небольшой «апгрейд» инструмента и добавить несколько полезных и приятных доработок.
Включение автодополнения команд в оболочке shell
Kubectl поддерживает автодополнение ввода практически «из коробки», поэтому первым логичным шагом будет включение автодополнения команд.
Автодополнение kubectl в bash
Скрипт, который выполняет автодополнение команд kubectl в командной оболочке bash, можно получить, написав команду:
kubectl completion bash
Но будет недостаточно выполнить только одну команду. Далее потребуется установить пакет bash-completion, который поможет включить автодополнение в командной оболочке. Сделать это можно командой:
apt-get install bash-completion
После установки пакета выполните команду:
type _init_completion
Если команда была выполнена без ошибок, то все установилось правильно. В ином случае вам необходимо добавить строчку в файл ~/.bashrc, чтобы подключить установленный пакет к командной оболочке:
echo 'source /usr/share/bash-completion/bash_completion' >> ~/.bashrc
После завершения настройки bash-completion можно приступать к настройке автодополнения ввода kubectl. Чтобы скрипт автодополнения выполнялся во всех сессиях терминала, вам необходимо выполнить одно из нескольких действий:
- добавить строку, которая запускает скрипт автодополнения ввода в файл конфигурации bash;
echo 'source <(kubectl completion bash)' >>~/.bashrc
- добавить скрипт дополнения в директорию с конфигурационными файлами утилиты bash-completion;
kubectl completion bash >/etc/bash_completion.d/kubectl
После этого можно перезапускать командную оболочку.
Автодополнение kubectl в bash на MacOS
По умолчанию в macOS используется bash версии 3.2, с которым автопродление не будет корректно работать. Для корректной работы автопродления в macOS необходимо сменить оболочку (например, мы рекомендуем использовать zsh) или выполнить обновление bash до версии 4.1 или новее. Если у вас установлен Bash версии 4.1 или новее, инструкция ниже будет актуальна.
Первым делом вам необходимо установить инструмент bash-completion v2, используя ваш пакетный менеджер. Для Homebrew команда будет выглядеть так:
brew install bash-completion@2
После завершения установки bash-completion, добавьте в файл ~/.bashrc следующий код:
export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d"
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"
После этого перезапустите командную оболочку и выполните команду:
type _init_completion
Ее корректное выполнение поможет убедиться, что все установилось правильно.
После завершения настройки bash-completion можно приступать к настройке автодополнения ввода kubectl. Чтобы скрипт автодополнения выполнялся во всех сессиях терминала, вам необходимо:
- добавить строку, которая запускает скрипт автодополнения ввода в файл конфигурации bash;
echo 'source <(kubectl completion bash)' >>~/.bashrc
- добавить скрипт дополнения в директорию с конфигурационными файлами утилиты bash-completion.
kubectl completion bash >/etc/bash_completion.d/kubectl
После этого можно перезапускать командную оболочку.
Автодополнение kubectl в zsh
Для организации автодополнения в оболочке zsh не потребуется устанавливать дополнительных программ и утилит, как это нужно делать при использовании Bash. Достаточно выполнить команду:
echo 'source <(kubectl completion zsh)' >>~/.zshrc
После выполнения команды и перезагрузки оболочки вы можете столкнуться с ошибкой такого вида:
complete:13: command not found: compdef
В таком случае в файл ~/.zshrc нужно будет добавить следующие строки:
autoload -Uz compinit
compinit
Быстрый просмотр спецификаций ресурсов в терминале
При создании YAML-файла, который определяет ресурсы, важно понимать значение каждого заполняемого поля. Основная часть информации содержится в документации к API Kubernetes, доступной на официальном сайте проекта. Постоянно переключаться с браузера на терминал и обратно не слишком удобно. Такого же мнения придерживаются и разработчики Kubernetes, поэтому в утилиту kubectl была добавлена возможность просмотра спецификаций по ресурсам.
Команда для вызова спецификаций имеет следующий вид:
kubectl explain resource[.field].
Если вы не до конца понимаете, какой именно ресурс вам нужен, можно выполнить команду, чтобы отобразить полный список:
kubectl api-resources
Можем видеть, что, например, ресурс endpoints имеет сокращение «ep». Это значит, что команды ниже будут равнозначны:
kubectl explain ep
kubectl explain Endpoints
Использование пользовательского формата вывода столбцов
В стандартном виде при выполнении команды kubectl get pods в ответ мы получаем следующий вывод:
При всем удобстве такого формата он малоинформативен, так как содержит всего несколько полей из полного определения ресурса. Если вам необходимо больше информации, можно использовать настраиваемый формат вывода столбцов. С его помощью вы можете указывать, какие именно данные нужно получить. Вывести отдельным столбцом можно любое поле. Делается это с помощью ключа -o и опции вида:
-o custom-columns=<spec>
Также для фильтра можно использовать готовый файл:
-o custom-columns-file=template.txt
Вы можете задать выводимым столбцам собственные имена:
kubectl get pods -o custom-columns='Selectel:metadata.name'
Selectel
nginx-85b98978db-qf5vx
web-76b56fd968-5rgc8
Давайте немного подробнее разберем выражения, которые используются для выборки.
Для организации пользовательского вывода столбцов в утилите kubectl используются выражения JSONPath — это специальный язык, созданный для выборки данных из документов в формате JSON. Учитывая этот факт, выбор одного поля, как в примере выше — самый простой метод использования JSONPath. Давайте рассмотрим все возможности, которые предоставлены разработчиками в рамках kubectl.
- Выбрать все элементы списка.
kubectl get pods -o custom-columns='DATA:spec.containers[*].image'
- Выбрать конкретный элемент из списка.
kubectl get pods -o custom-columns='DATA:spec.containers[0].image'
- Выбрать все элементы списка, попадающие под заданный фильтр.
kubectl get pods -o custom-columns='DATA:spec.containers[?(@.image!="nginx")].image'
- Выбрать все поля по указанному пути.
kubectl get pods -o custom-columns='DATA:metadata.*'
- Выбрать все поля с указанным именем, вне зависимости от их расположения.
kubectl get pods -o custom-columns='DATA:..image'
Например, вы можете вывести таблицу, в которой будет отображаться список подов и контейнеры, развернутые в них. Для этого выполните команду:
kubectl get pods -o custom-columns='NAME:metadata.name,IMAGES:spec.containers[*].image'
Вывод будет следующий:
Легкое переключение между кластерами и пространствами имен
Kubectl был создан, чтобы упростить взаимодействие API с Kubernetes. Выполняя запрос к различным эндпоинтам, утилита проверяет файл kubeconfig, получая из него все необходимые для соединения параметры. Если вы работаете сразу с несколькими кластерами, в вашем kubeconfig будут содержаться параметры для подключения сразу к нескольким кластерам. Также, вероятно, у вас будет несколько файлов Kubeconfig — по одному файлу на кластер. В этом случае вы можете запускать kubectl с ключом —kubeconfig и выбирать необходимый файл, указывая его имя.
Файл kubeconfig
Файл kubeconfig содержит в себе определенное количество контекстов для различных кластеров:
- Cluster — элемент, указывающий на URL API сервера вашего кластера;
- User — учетные данные, с помощью которых происходит аутентификация в кластере;
- Namespace — пространство имен, которое используется внутри кластера.
Как правило, для каждого из кластеров используется несколько файлов kubeconfig. В каждом файле может быть несколько контекстов с разными пользователями и пространствами имен. Вне зависимости от количества контекстов, один из них всегда будет текущим. Для подключения к другому контексту всегда нужно переключить контекст в файле kubeconfig. Чтобы менять пространства имен, нужно изменить элемент namespace файла kubeconfig.
Использование kubectx и kubens
Kubectx и kubens — две самые популярные утилиты для смены контекста и пространства имен при работе с кластерами kubernetes. Для их установки вы можете использовать команды:
sudo git clone https://github.com/ahmetb/kubectx /opt/kubectx
sudo ln -s /opt/kubectx/kubectx /usr/local/bin/kubectx
sudo ln -s /opt/kubectx/kubens /usr/local/bin/kubens
Также для установки может использоваться специальный пакетный менеджер Krew. В таком случае установите пакетный менеджер (инструкция по установке есть на странице проекта) и введите команды:
kubectl krew install ctx
kubectl krew install ns
Примеры использования утилит из GitHub проекта
Kubens:
Kubectx:
Использование алиасов командной оболочки
Чтобы изменить контекст или неймспейс, вам не потребуются дополнения или сторонние скрипты: можно использовать встроенные инструменты kubectl. Например, команда kubectl config поможет отредактировать файлы kubeconfig. Встроенные команды могут быть длинными и не слишком удобными, поэтому рекомендуем создавать алиасы командной оболочки, чтобы работать с kubectl было удобнее.
Приведенные ниже примеры алиасов используют стороннюю утилиту fzf, с помощью которой созданные алиасы могут совершать поиск по наименованиям.
Наши примеры алиасов выглядят так:
# Получить текущий контекст
alias krc='kubectl config current-context'
# Список всех контекстов
alias klc='kubectl config get-contexts -o name | sed "s/^/ /;\|^ $(krc)$|s/ /*/"'
# Изменить текущий контекст
alias kcc='kubectl config use-context "$(klc | fzf -e | sed "s/^..//")"'
# Получить текущий неймспейс
alias krn='kubectl config get-contexts --no-headers "$(krc)" | awk "{print \$5}" | sed "s/^$/default/"'
# Список всех доступных неймспейсов
alias kln='kubectl get -o name ns | sed "s|^.*/| |;\|^ $(krn)$|s/ /*/"'
# Изменить текущий неймспейс
alias kcn='kubectl config set-context --current --namespace "$(kln | fzf -e | sed "s/^..//")"'
Сокращение ввода автоалиасами
Еще один способ ускорить работу с kubectl — настройка и использование автоалиасов для команд. Самый популярный проект на GitHub с готовыми алиасами содержит больше 1 200 сокращений для разных вариаций многоступенчатых команд kubectl. Может показаться, что ориентироваться в таком количестве сокращений еще сложнее, чем в самой утилите. Но участники проекта вывели систему сокращений алиасов.
- k=kubectl
- sys= —namespace kube-system
Команды:
- g=get
- d=describe
- rm=delete
- a:apply -f
- ak:apply -k
- k:kustomize
- ex: exec -i -t
- lo: logs -f
Ресурсы кластера
- po=pod, dep=deployment, ing=ingress, svc=service, cm=configmap, sec=secret, ns=namespace, no=node
Флаги для команд:
- output format: oyaml, ojson, owide
- all: —all или —all-namespaces в зависимости от вводимой команды
- sl: —show-labels
- w=-w/—watch
Флаги, имеющие значение (например, название неймспейса):
- n=-n/—namespace
- f=-f/—filename
- l=-l/—selector
Например, команда kubectl get pods -o yaml в виде алиаса будет выглядеть как kgpooyaml.
Также вы можете использовать некоторые из алиасов вне сложных конструкций. К примеру, команда kg pods будет возвращать таблицу с подами, аналогично командам kgpo и kubectl get pods.
Включение автодополнения алиасов kubectl
Без автодополнения алиасы теряют свой смысл, так как, учитывая многослойную структуры команд kubectl, работа с утилитой становится крайне неудобной. Если вы используете оболочку Zsh, никакой дополнительной настройки после добавления алиасов не потребуется. В случае с Bash придется устанавливать дополнительную утилиту complete-alias, чтобы автодополнение работало корректно. Это обусловлено тем, что при попытке дополнить вводимую команду Bash, в отличие от Zsh, ссылается не на команду, а на сам алиас.
Для работы complete-alias потребуется установить bash-completion, затем выполнить команду git clone, а дальше — указать путь к файлу complete_alias в файле .bashrc вашего пользователя.
Здесь необходимо включить автодополнение для всех установленных алиасов kubectl, созданных в текущей оболочке:
for _a in $(sed '/^alias /!d;s/^alias //;s/=.*$//' ~/.kubectl_aliases);
do
complete -F _complete_alias "$_a"
done
Команда сработает, только если kubectl-aliases был установлен в ~/.kubectl-aliases.
После этого добавьте код в файл .bashrc, чтобы автодополнение алиасов работало для других сессий терминала.
Расширение функционала kubectl при помощи плагинов
В версии 1.12 kubectl начал поддерживать механику работы с плагинами. Плагины расширяют и без того огромный функционал утилиты kubectl и сильно упрощают работу.
Установка плагинов
Плагины для утилиты kubectl — это исполняемые файлы со стандартным названием вида kubectl-x, где вместо X будет название плагина.
Для установки плагина стандартным способом достаточно поместить исполняемый файл с плагином в директорию из переменной PATH. Чтобы просмотреть список всех установленных у вас плагинов, нужно выполнить команду:
kubectl plugin list
Поиск и установка плагинов с помощью Krew
Krew — открытый проект, цель которого максимально упростить поиск и установку плагинов для kubectl. Krew преподносится как пакетный менеджер для плагинов kubectl и вполне оправдывает это звание: с помощью него можно найти, установить и обновить плагины. При этом сам Krew — плагин для kubectl. Установить его можно по подробной инструкции.
Самые важные команды Krew
- найти плагин:
kubectl krew search <запрос>
- вывести информацию о плагине:
kubectl krew info <плагин>
- установить плагин:
kubectl krew install <плагин>
- обновить плагины:
kubectl krew upgrade
- вывести список плагинов, установленных с помощью Crew:
kubectl krew list
- удалить плагины:
kubectl krew remove <плагин>
Поиск плагинов в других местах
Krew — не единственное место, где можно найти плагины для kubectl. Многие из них доступны на GitHub.
Написание собственных плагинов
Если вы не смогли найти нужный плагин, можно попробовать написать свой собственный. Это может быть файл на любом языке, например, Bash, Python или Go. Чтобы написать более сложный плагин kubectl, можете использовать официальные клиентские библиотеки Kubernetes.
После создания файла, дайте ему название в формате kubectl-x и переместите в директорию из переменной PATH.
Заключение
В статье мы познакомились с таким инструментом как kubectl, разобрали механизмы его работы, а также провели его установку на примере разных ОС. Дополнительно описали способы улучшить опыт использования инструмента, сделать его комфортнее и проще.
A kubectl
is the official Kubernetes command-line tool, used to run commands on Kubernetes clusters.
As the kubectl
is distributed as a standalone binary it can be easily downloaded from official sources and installed on Windows.
In this post I will show how to download and install the latest stable version of the kubectl
on Windows through a graphical user interface (GUI), or using a command-line prompt (CMD) or PowerShell.
Cool Tip: Install Minikube on Windows! Read More →
Download the kubectl
executable for Windows:
- https://dl.k8s.io/release/v1.27.3/bin/windows/amd64/kubectl.exe
Replace a version in the URL above with the latest stable one.
Open a user’s home folder by typing %USERPROFILE%
in the address bar of a “File Explorer”:
In the user’s home create a bin
folder and move the kubectl
there:
Start the environment variables editor – press the ⊞ Win keybutton to open the “Start” menu, type in envi
and click on “Edit environment variables for your account”.
The environment variables editor can also be launched with the following command from the CMD or PowerShell:
C:\> rundll32 sysdm.cpl,EditEnvironmentVariables
Add the bin
folder to a Path
environment variable:
Install Kubectl on Windows using CMD or PowerShell
Alternatively the kubectl
can be installed on Windows from the CMD or PowerShell using the commands below.
To download the latest stable version of the kubectl
for Windows, execute the commands below either from the CMD or PowerShell:
C:\> for /F %I in ('curl -L https://dl.k8s.io/release/stable.txt') do set KUBECTL_VERSION=%I C:\> curl -LO "https://dl.k8s.io/release/%KUBECTL_VERSION%/bin/windows/amd64/kubectl.exe"
Create a %USERPROFILE%\bin
folder, add it to the current user’s %PATH%
and move the kubectl
executable there:
C:\> mkdir "%USERPROFILE%\bin" C:\> setx path "%PATH%;%USERPROFILE%\bin" C:\> move kubectl.exe "%USERPROFILE%\bin"
To verify the kubectl
installation – open the new CMD or PowerShell window and execute the following commands:
C:\> where.exe kubectl - sample output - C:\Users\%USERNAME%\bin\kubectl.exe C:\> kubectl version --client -o json - sample output - { "clientVersion": { "major": "1", "minor": "27", "gitVersion": "v1.27.4", "gitCommit": "fa3d7990104d7c1f16943a67f11b154b71f6a132", "gitTreeState": "clean", "buildDate": "2023-07-19T12:20:54Z", "goVersion": "go1.20.6", "compiler": "gc", "platform": "windows/amd64" }, "kustomizeVersion": "v5.0.1" }
Was it useful? Share this post with the world!
kubectl — консольная утилита для работы с сущностями кластера Kubernetes. При помощи нее можно управлять ресурсами кластера, разворачивать приложения, просматривать логи и выполнять другие задачи администрирования.
Обратите внимание, что минорная версия
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 на данный момент доступны только 1.29, 1.30 и 1.31 версии. Не стоит использовать этот метод установки для версий Kubernetes ниже 1.28 версии.
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>