Kubernetes: запуск kubectl: команда не найдена

#kubernetes #gcloud #kubectl

#kubernetes #gcloud #kubectl

Вопрос:

Я запускал команду kubectl для развертывания моего приложения в gcloud. Но внезапно команда kubectl перестала работать. kubectl команда работает нормально, но для всего остального в ней указано, что команда не найдена.

kubectl create
bash: kubectl create: command not found

kubectl run
bash: kubectl run: command not found

 SBGML02586:~ mku01$ kubectl
kubectl controls the Kubernetes cluster manager. 

Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/

Basic Commands (Beginner):
  create         Create a resource from a file or from stdin.
  expose         Take a replication controller, service, deployment or pod and
expose it as a new Kubernetes Service
  run            Run a particular image on the cluster
  set            Set specific features on objects......
  

Комментарии:

1. Что вы получите, если запустите echo $PATH

2. это /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

3. @user1529891 вы можете увидеть отредактированный вопрос, kubectl установлен правильно.

4. which kubectl /usr/local/bin/kubectl

5. Можете ли вы выполнить strace -f kubectl run или что-то подобное (и добавить вывод к вопросу)? Действительно похоже, что ваша оболочка может не обрабатывать пробелы и каким-то образом она считает, что весь kubectl run файл является именем программы.

Ответ №1:

У меня была похожая ошибка, когда я впервые настраивал Kubernetes в Linux:

Когда я пытаюсь выполнить команды:

 kubectl cluster-info
kubectl version
  

Я получаю сообщение об ошибке:

 -bash: kubectl: command not found
  

Вот как я это исправил:

Загрузите последнюю версию Kubernetes с помощью команды:

 curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl"
  

Создайте двоичный исполняемый файл kubectl:

 chmod  x ./kubectl
  

Переместите двоичный файл в свой PATH:

 sudo mv ./kubectl /usr/local/bin/kubectl
  

Проверьте, чтобы убедиться, что установленная вами версия является актуальной:

 kubectl cluster-info
kubectl version
  

Подробнее об этом можно прочитать в официальных документах Kubernetes: Установка и настройка kubectl

Вот и все.

Я надеюсь, что это поможет

Комментарии:

1. Я думаю, важно упомянуть новым людям, начинающим использовать Kubernetes (таким как я ..), что эти команды должны запускаться из учетной записи, отличной от root, с привилегиями sudo. В моем случае я был заблокирован при запуске только потому, что я запускал установку от имени root.

Ответ №2:

Я получил это сообщение при использовании wsl в Windows. kubectl работал, но внезапно начал показывать ту же ошибку

 /mnt/c/Users/xxxx$ kubectl
kubectl: command not found
  

Проблема заключалась в том, что docker не был запущен после перезагрузки моего ноутбука

 :/usr/local/bin$ ls -ltr
total 2548
-rwxr-xr-x 1 root root     221 Sep 18  2020 pip3.8
-rwxr-xr-x 1 root root     221 Sep 18  2020 pip3
-rwxr-xr-x 1 root root     221 Sep 18  2020 pip
-rwxr-xr-x 1 root root     208 Sep 18  2020 wheel
-rwxr-xr-x 1 root root 2592768 Apr  5 10:57 kubectx
lrwxrwxrwx 1 root root      55 May 24 11:22 kubectl -> /mnt/wsl/docker-desktop/cli-tools/usr/local/bin/kubect
  

Он начал работать, как только я запустил свое приложение docker (я использую docker-desktop для Windows, и я отключил автозапуск при запуске)

Ответ №3:

Пользователи Homebrew могут исправить это с помощью:

 brew reinstall kubectl
  

Возможно, потребуется выполнить ее с:

 brew link --overwrite kubernetes-cli
  

Ответ №4:

Пожалуйста, проверьте свой конфигурационный файл nix и добавьте «kubernetes.enable = true;» в инструменты.

Ответ №5:

kubectl недоступен после включения kubernetes в docker-desktop. Выполните следующие действия, чтобы устранить проблему:

Первый шаг: Загрузите последнюю версию с помощью команды:

 curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
  

Второй шаг:
Загрузите файл контрольной суммы kubectl:

 curl -LO "https://dl.k8s.io/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl.sha256"
  

Проверьте двоичный файл kubectl на соответствие файлу контрольной суммы:

 echo "$(cat kubectl.sha256)  kubectl" | sha256sum --check
  

Если допустимо, вывод будет:

 kubectl: OK
  

Если проверка завершается неудачей, sha256 завершается с ненулевым статусом и выводит вывод, аналогичный:

Примечание: Загрузите ту же версию двоичного файла и контрольной суммы.

Третий шаг:

Установите kubectl

 sudo install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
  

Четвертый шаг:

Проверьте, чтобы убедиться, что установленная вами версия является актуальной:

 kubectl version --client
  

или используйте это для подробного просмотра версии:

 kubectl version --client --output=yaml