Перейти к основному содержанию

Установка kubectl в Ubuntu

DevOps

kubectl — утилита командной строки для запуска команд кластера Kubernetes.

Используемая вами мажорная версия kubectl не должна отличаться от той, которая используется в кластере. Например, версия v1.2 может работать с версиями v1.1, v1.2 и v1.3. Чтобы избежать проблем, лучше использовать одинаковые версии кластера Kubernetes и утилиты kubectl.

Теория установки

Установка с помощью cur (MacOS)

Установка последней версии:

curl -LO https://storage.googleapis.com/kubernetes-release/release/`curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt`/bin/linux/amd64/kubectl

Установка определённой версии:

curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.26.0/bin/linux/amd64/kubectl

Далее:

chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
kubectl version --client

Установка с помощью пакетного менеджера

Debian/Ubuntu

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

CentOS/RHEL/Fedora

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

snap install kubectl --classic
kubectl version

Установка с помощью Homebrew

brew install kubectl
kubectl version

Установка с помощью Macports (MacOS)

sudo port selfupdate
sudo port install kubectl
kubectl version --client

Практика установки

Сегодня установим kubectl версии 1.13.2 на Windows в WSL2. В качестве виртуалки WSL2 у нас крутится Ubuntu 20.04 LTS.

cd /tmp
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.13.2/bin/linux/amd64/kubectl
chmod +x ./kubectl
sudo mv ./kubectl /usr/local/bin/kubectl
kubectl version --client

k8s

Конфигурация kubectl

Чтобы kubectl мог найти и получить доступ к кластеру Kubernetes, нужен файл kubeconfig, который создаётся автоматически при создании кластера с помощью скрипта kube-up.sh или при успешном развертывании кластера Minikube. По умолчанию конфигурация kubectl находится в ~/.kube/config.

Я на WSL2 работаю под рутом, создам /root/.kube/.kubeconfig.

cd /root
mkdir .kube
cd ./.kube
touch .kubeconfig

В .kubeconfig размещаю конфигурацию для доступа к кластеру. Пример конфигурации:

apiVersion: v1
clusters:
- cluster:
    certificate-authority: fake-ca-file
    server: https://1.2.3.4
  name: development
contexts:
- context:
    cluster: development
    namespace: frontend
    user: developer
  name: dev-frontend
current-context: dev-frontend
kind: Config
preferences: {}
users:
- name: developer
  user:
    client-certificate: fake-cert-file
    client-key: fake-key-file

Проверить конфигурационный файл на ошибки можно так:

kubectl version
kubectl get nodes

Если в конфигурационном файле есть ошибки, то они отобразятся.

Переключение между контекстами

Если у нас несколько кластеров K8s, а это обычная практика, то контекстов в конфигурации может быть несколько. Просмотр текущих контекстов:

kubectl config get-contexts
CURRENT   NAME   CLUSTER        AUTHINFO     NAMESPACE
          prod   prod-cluster   prod-admin   prod
*         test   test-cluster   test-admin   test

Текущий контекст test. Переключиться на другой контекст:

kubectl config use-context prod

Может пригодиться kubectx

Полезный пакет kubectx предоставляет команды kubectx и kubens для изменения текущего контекста и пространства имен. Полезно при наличии нескольких кластеров.

Установка kubectx и kubens в Ubuntu 20:

cd /tmp
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

k8s

Вывести все контексты:

kubectx

Переключиться на контекст prod:

kubectx prod

Отобразить все неймспейсы:

kubens

Переключиться на другой неймспейс:

kubens <namespacename>

Для удобства можно использовать алиасы (прописать в ~/.bashrc):

alias kx='kubectx'
alias kn='kubens'

k8s

Ссылки

https://kubernetes.io/ru/docs/tasks/tools/install-kubectl/

Теги

 

Похожие материалы

Ansible is being run in a world writable directory

Поймал WARNING при попытке запустить ansible-playbook. Горе-разработчики сделали очередную палку в колёса. Теперь нельзя просто так взять и запустить команду из директории, доступной всем на запись. Команда запустится, но конфигурационный файл ansible.cfg применён не будет.

Теги