Kubectl – это утилита командной строки, используемая для контроля и управления кластерами Kubernetes и объектами, на которых они работают.
Kubectl позволяет создавать, изменять и удалять различные ресурсы Kubernetes, такие как Deployments, Pod, Services, контексты переключения и даже для доступа к оболочке контейнера.
Мы начнем с установки kubectl, а затем перейдем к конфигурациям, которые должны быть более эффективными при управлении кластерами Kubernetes из CLI с помощью kubectl.
Обратите внимание, что у вас должен быть работающий кластер Kubernetes, прежде чем использовать это руководство.
Проверьте любое из наших руководств, показанное ниже.
- ☸️ Как развернуть легкий кластер Kubernetes за 5 минут с K3s
- ☸️ Разверните готовый кластер Kubernetes с помощью Ansible & Kubespray
- 👨🚀 Как запустить локальные кластеры Kubernetes в Docker
- ☸️ Локальные Kubernetes для Linux — MiniKube или MicroK8s
Установка Kubectl на Linux и MacOS
При установке кластера Kubernetes вы должны установить kubectl в качестве основного требования.
Но это означает, что вам нужно войти на главный узел для запуска команд kubectl.
Вы можете установить kubectl на свой локальный компьютер с Linux или macOS.
Установка kubectl в Linux
curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
Подтвердите вашу установку kubectl.
$ kubectl version
Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.3", GitCommit:"b3cbbae08ec52a7fc73d334838e18d17e8512749", GitTreeState:"clean", BuildDate:"2019-11-13T11:23:11Z", GoVersion:"go1.12.12", Compiler:"gc", Platform:"linux/amd64"}
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.3-k3s.2", GitCommit:"e7e6a3c4e9a7d80b87793612730d10a863a25980", GitTreeState:"clean", BuildDate:"2019-11-18T18:31:23Z", GoVersion:"go1.13.4", Compiler:"gc", Platform:"linux/amd64"}
Установка kubectl на macOS
curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl"
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
kubectl version
Настройка Kubectl
Инструмент kubectl ищет файл с именем config в каталоге $HOME/.kube, но отдельный файл можно указать с помощью параметра –kubeconfig.
Файлы kubeconfig помогают вам организовать информацию о кластерах, пользователях, пространствах имен и механизмах аутентификации.
$ ls $HOME/.kube/config
/home/jmutai/.kube/config
- clusters – для настройки доступа к кластеру необходимо знать местоположение кластера и иметь учетные данные для доступа к нему. В этом разделе вы зададите certificate-authority-data, access URL и name
- context: элемент context используется для группировки параметров доступа под удобным именем. Каждый контекст в файле конфигурации должен иметь три параметра:cluster, namespace, и user.
- users: укажите используемый доступ аутентификации и учетные данные.
Для одного кластера ваш файл конфигурации будет выглядеть примерно так, как показано ниже.
cat .kube/config
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUJWakNCL3FBREFnRUNBZ0VBTUFvR0NDcUdTTTQ5QkFNQ01DTXhJVEFmQmdOVkJBTU1HR3N6Y3kxelpYSjIKWlhJdFkyRkFNVFUzTkRNNE16ZzJOVEFlRncweE9URXhNakl3TURVeE1EVmFGdzB5T1RFeE1Ua3dNRFV4TURWYQpNQ014SVRBZkJnTlZCQU1NR0dzemN5MXpaWEoyWlhJdFkyRkFNVFUzTkRNNE16ZzJOVEJaTUJNR0J5cUdTTTQ5CkFnRUdDQ3FHU000OUF3RUhBMElBQkpsb3NSY1FRTHlsL28yeFltQ0l4eHdsZ1F3ZTdlU1dxQmNaRFQ3Q2xJcXoKNnB4R24yb2w3MHM3N3dpcTNaRnkrSW0vdFhHSW16Y3N6MHFNYUpjUy9rV2pJekFoTUE0R0ExVWREd0VCL3dRRQpBd0lDcERBUEJnTlZIUk1CQWY4RUJUQURBUUgvTUFvR0NDcUdTTTQ5QkFNQ0EwY0FNRVFDSUVJcjZ6NGRMUUw1Ck8wSUN3ejBWUEdhYUs0bEU3bFU3SmJXTWhoRk9vcDh1QWlBKzZhcG9NMFVtZ1IxYkFBeWNaS0VHL3AzQWRhWmEKMWV3TGxmUkxiWkJwa3c9PQotLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCg==
server: https://127.0.0.1:6443
name: default
contexts:
- context:
cluster: default
user: default
name: default
current-context: default
kind: Config
preferences: {}
users:
- name: default
user:
password: 76dd75552cb14f3085445277a2091c6c
username: admin
Конфигурация Kubectl для нескольких кластеров
Ниже приведен файл конфигурации шаблона для четырех кластеров Kubernetes, а именно:
- k8s-dev – контекст k8s-dev, пользователь k8s-dev-admin.
- k8s-staging – контекст – это k8s-staging, пользователь – k8s-staging-admin.
- k8s-qa – контекст – k8s-qa, пользователь – k8s-qa-admin.
- k8s-prod – контекст – это k8s-prod, пользователь – k8s-prod-admin.
Каждый кластер имеет уникальное имя, связанный контекст и пользователя.
apiVersion: v1
kind: Config
preferences: {}
clusters:
- cluster:
certificate-authority-data:
server:
name: k8s-dev
- cluster:
certificate-authority-data:
server:
name: k8s-staging
- cluster:
certificate-authority-data:
server:
name: k8s-qa
- cluster:
certificate-authority-data:
server:
name: k8s-prod
contexts:
- context:
cluster: k8s-dev
user: k8s-dev-admin
name: k8s-dev
- context:
cluster: k8s-staging
user: k8s-staging-admin
name: k8s-staging
- context:
cluster: k8s-qa
user: k8s-qa-admin
name: k8s-qa
- context:
cluster: k8s-prod
user: k8s-prod-admin
name: k8s-prod
users:
- name: k8s-dev-admin
user:
password:
username:
- name: k8s-staging-admin
user:
client-certificate-data:
client-key-data:
- name: k8s-qa-admin
user:
client-certificate-data:
client-key-data:
- name: k8s-prod-admin
user:
client-certificate-data:
client-key-data:
Переключение между контекстами с kubectl
$ kubectl config get-contexts
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* k8s-dev k8s-dev k8s-dev-admin kube-system
k8s-staging k8s-staging k8s-staging-admin kube-system
k8s-qa k8s-qa k8s-qa-admin kube-system
k8s-prod k8s-prod k8s-prod-admin kube-system
$ kubectl config use-context k8s-prod
Переключился на контекст "k8s-prod".
$ kubectl config use-context k8s-staging
Переключился на контекст "k8s-staging".
$ kubectl get nodes
NAME STATUS ROLES AGE VERSION
k3s-master01 Ready master 10d v1.16.3-k3s.2
k3s-worker01 Ready <none> 9d v1.16.3-k3s.2
k3s-worker02 Ready <none> 9d v1.16.3-k3s.2
Простое переключение контекста и пространства имен с помощью kubectx и kubens
kubectx помогает переключаться между кластерами вперед и назад, а kubens помогает плавно переключаться между пространствами имен Kubernetes:
Установите kubectx и kubens
wget https://raw.githubusercontent.com/ahmetb/kubectx/master/kubectx
wget https://raw.githubusercontent.com/ahmetb/kubectx/master/kubens
chmod +x kubectx kubens
sudo mv kubens kubectx /usr/local/bin
Помощь:
$ kubectx --help
USAGE:
kubectx : list the contexts
kubectx <NAME> : switch to context <NAME>
kubectx - : switch to the previous context
kubectx -c, --current : show the current context name
kubectx <NEW_NAME>=<NAME> : rename context <NAME> to <NEW_NAME>
kubectx <NEW_NAME>=. : rename current-context to <NEW_NAME>
kubectx -d <NAME> [<NAME...>] : delete context <NAME> ('.' for current-context)
(this command won't delete the user/cluster entry
that is used by the context)
$ kubens --help
USAGE:
kubens : list the namespaces in the current context
kubens <NAME> : change the active namespace of current context
kubens - : switch to the previous namespace in this context
kubens -c, --current : show the current namespace
kubens -h,--help : show this message
Примеры:
# Вывести все контексты
$ kubectx
k8s-dev
k8s-staging
k8s-qa
k8s-prod
# Переключиться на контекст k8s-prod
$ kubectx k8s-prod
# Отобразить все неймспейсы
$ kubens
# Переключиться на др. неймспейс
$ kubens <namespacename>
Далее гифки для демонстрации

