Вам потрібно використовувати версію kubectl, яка має мінорну версію, що відрізняється не більше ніж на одиницю від мінорної версії вашого кластера. Наприклад, клієнт v1.37 може співпрацювати з панелями управління v1.36, v1.37 та v1.38. Використання останньої сумісної версії kubectl допомагає уникнути непередбачуваних проблем.
Існують наступні методи встановлення kubectl у macOS:
Завантажте останній випуск:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl"
Щоб завантажити певну версію, замініть частину $(curl -L -s https://dl.k8s.io/release/stable.txt) команди на конкретну версію.
Наприклад, щоб завантажити версію 1.37.0 на Intel macOS, введіть:
curl -LO "https://dl.k8s.io/release/v1.37.0/bin/darwin/amd64/kubectl"
А для macOS на Apple Silicon, введіть:
curl -LO "https://dl.k8s.io/release/v1.37.0/bin/darwin/arm64/kubectl"
Перевірте бінарний файл (необовʼязково)
Завантажте файл контрольної суми для kubectl:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl.sha256"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl.sha256"
Перевірте бінарний файл kubectl за допомогою файлу контрольної суми:
echo "$(cat kubectl.sha256) kubectl" | shasum -a 256 --check
Якщо перевірка пройшла успішно, вивід буде таким:
kubectl: OK
Якщо перевірка не вдалася, shasum виходить з ненульовим статусом і виводить подібне повідомлення:
kubectl: FAILED
shasum: WARNING: 1 computed checksum did NOT match
Зробіть бінарний файл kubectl виконуваним.
chmod +x ./kubectl
Перемістіть бінарний файл kubectl до теки, що входить до PATH вашої системи.
sudo mv ./kubectl /usr/local/bin/kubectl
sudo chown root: /usr/local/bin/kubectl
/usr/local/bin є у вашій змінній середовища PATH.Перевірте, що встановлена версія kubectl актуальна:
kubectl version --client
Або використовуйте це для детального перегляду версії:
kubectl version --client --output=yaml
Після встановлення та перевірки kubectl видаліть файл контрольної суми:
rm kubectl.sha256
Якщо ви користуєтеся macOS і пакетним менеджером Homebrew, ви можете встановити kubectl за допомогою Homebrew.
Виконайте команду встановлення:
brew install kubectl
або
brew install kubernetes-cli
Перевірте, що встановлена версія актуальна:
kubectl version --client
Якщо ви користуєтеся macOS і пакетним менеджером Macports, ви можете встановити kubectl за допомогою Macports.
Виконайте команду встановлення:
sudo port selfupdate
sudo port install kubectl
Перевірте, що встановлена версія актуальна:
kubectl version --client
Щоб kubectl міг знайти кластер Kubernetes і отримати до нього доступ, йому потрібен файл kubeconfig, який створюється автоматично, коли ви створюєте кластер за допомогою kube-up.sh або успішно розгортаєте кластер Minikube. Стандартно конфігурація kubectl міститься в ~/.kube/config.
Перевірте, що kubectl правильно налаштований, отримавши стан кластера:
kubectl cluster-info
Якщо у відповідь ви бачите 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
У Kubernetes 1.26 з kubectl вилучено вбудовану автентифікацію для керованих сервісів Kubernetes таких хмарних провайдерів. Ці провайдери випустили втулки kubectl, що забезпечують автентифікацію для їхніх хмар. Інструкції дивіться в документації провайдера:
Те саме повідомлення про помилку може мати й інші причини, не повʼязані з цією зміною.
kubectl надає підтримку автодоповнення для оболонок Bash, Zsh, Fish та PowerShell, що може значно зекономити ваш час при введенні команд.
Нижче подані процедури для налаштування автодоповнення для оболонок Bash, Fish та Zsh.
Скрипт автодоповнення kubectl для Bash можна згенерувати командою kubectl completion bash. Підключення цього скрипта у вашій оболонці вмикає автодоповнення kubectl.
Однак скрипт автодоповнення kubectl залежить від bash-completion, який потрібно встановити заздалегідь.
Ці інструкції передбачають, що ви використовуєте Bash 4.1+. Перевірити версію Bash можна, виконавши:
echo $BASH_VERSION
Якщо вона надто стара, ви можете встановити або оновити її за допомогою Homebrew:
brew install bash
Перезавантажте оболонку й перевірте, що використовується потрібна версія:
echo $BASH_VERSION $SHELL
Зазвичай Homebrew встановлює його в /usr/local/bin/bash.
Ви можете перевірити, чи вже встановлено bash-completion v2, за допомогою type _init_completion. Якщо ні, встановіть його за допомогою Homebrew:
brew install bash-completion@2
Як зазначено у виводі цієї команди, додайте наведене нижче до файлу ~/.bash_profile:
brew_etc="$(brew --prefix)/etc" && [[ -r "${brew_etc}/profile.d/bash_completion.sh" ]] && . "${brew_etc}/profile.d/bash_completion.sh"
Перезавантажте оболонку й перевірте, що bash-completion v2 правильно встановлено, за допомогою type _init_completion.
Тепер потрібно забезпечити підключення скрипта автодоповнення kubectl в усіх сеансах оболонки. Це можна зробити кількома способами:
Підключіть скрипт автодоповнення у файлі ~/.bash_profile:
echo 'source <(kubectl completion bash)' >>~/.bash_profile
Додайте скрипт автодоповнення до теки /usr/local/etc/bash_completion.d:
kubectl completion bash >/usr/local/etc/bash_completion.d/kubectl
Якщо у вас є псевдонім для kubectl, ви можете розширити автодоповнення оболонки, щоб воно працювало з цим псевдонімом:
echo 'alias k=kubectl' >>~/.bash_profile
echo 'complete -o default -F __start_kubectl k' >>~/.bash_profile
Якщо ви встановили kubectl за допомогою Homebrew (як пояснено тут), скрипт автодоповнення kubectl вже має бути в /usr/local/etc/bash_completion.d/kubectl. У цьому випадку нічого робити не потрібно.
BASH_COMPLETION_COMPAT_DIR, тому два останні способи працюють.У будь-якому разі після перезавантаження оболонки автодоповнення kubectl має працювати.
Скрипт автодоповнення kubectl для Fish можна згенерувати командою kubectl completion fish. Підключення цього скрипта у вашій оболонці вмикає автодоповнення kubectl.
Щоб зробити це в усіх сеансах оболонки, додайте такий рядок до файлу ~/.config/fish/config.fish:
kubectl completion fish | source
Після перезавантаження оболонки автодоповнення kubectl має працювати.
Скрипт автодоповнення kubectl для Zsh можна згенерувати командою kubectl completion zsh. Підключення цього скрипта у вашій оболонці вмикає автодоповнення kubectl.
Щоб зробити це в усіх сеансах оболонки, додайте наведене нижче до файлу ~/.zshrc:
source <(kubectl completion zsh)
Якщо у вас є псевдонім для kubectl, автодоповнення kubectl автоматично працюватиме з ним.
Після перезавантаження оболонки автодоповнення kubectl має працювати.
Якщо ви отримуєте помилку на кшталт 2: command not found: compdef, додайте наведене нижче на початок файлу ~/.zshrc:
autoload -Uz compinit
compinit
Дивіться kuberc для отримання докладної інформації.
kubectl convertВтулок для інструмента командного рядка Kubernetes kubectl, який дозволяє конвертувати маніфести між різними версіями API. Це може бути особливо корисно для міграції маніфестів на незастарілу версію API в новіших випусках Kubernetes. Докладніше дивіться в розділі перехід на незастарілі API.
Завантажте останній випуск за допомогою команди:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl-convert"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl-convert"
Перевірте бінарний файл (необовʼязково)
Завантажте файл контрольної суми для kubectl-convert:
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/amd64/kubectl-convert.sha256"
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/darwin/arm64/kubectl-convert.sha256"
Перевірте бінарний файл kubectl-convert за допомогою файлу контрольної суми:
echo "$(cat kubectl-convert.sha256) kubectl-convert" | shasum -a 256 --check
Якщо перевірка пройшла успішно, вивід буде таким:
kubectl-convert: OK
Якщо перевірка не вдалася, shasum виходить з ненульовим статусом і виводить подібне повідомлення:
kubectl-convert: FAILED
shasum: WARNING: 1 computed checksum did NOT match
Зробіть бінарний файл kubectl-convert виконуваним.
chmod +x ./kubectl-convert
Перемістіть бінарний файл kubectl-convert до теки, що входить до PATH вашої системи.
sudo mv ./kubectl-convert /usr/local/bin/kubectl-convert
sudo chown root: /usr/local/bin/kubectl-convert
/usr/local/bin є у вашій змінній середовища PATH.Перевірте, що втулок успішно встановлено
kubectl convert --help
Якщо ви не бачите жодних помилок, втулок було встановлено успішно.
Після встановлення втулка вилучіть файли встановлення:
rm kubectl-convert kubectl-convert.sha256
Залежно від того, як ви встановили kubectl, використовуйте один з наступних методів.
Знайдіть бінарний файл kubectl у вашій системі:
which kubectl
Видаліть бінарний файл kubectl:
sudo rm <path>
Замініть <path> на шлях до бінарного файлу kubectl з попереднього кроку. Наприклад, sudo rm /usr/local/bin/kubectl.
Якщо ви встановили kubectl за допомогою Homebrew, виконайте наступну команду:
brew remove kubectl