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
Конфигурация 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
Вывести все контексты:
kubectx
Переключиться на контекст prod:
kubectx prod
Отобразить все неймспейсы:
kubens
Переключиться на другой неймспейс:
kubens <namespacename>
Для удобства можно использовать алиасы (прописать в ~/.bashrc):
alias kx='kubectx'
alias kn='kubens'