'How to set path to kubectl when installed using gcloud components install?
Ok, I installed kubectl in the following way on my Mac: 1) installed gcloud using homebrew 2) installed kubectl using gcloud components install.
I want to run a shell script that calls kubectl directly. However, I get an error. $ kubectl version -bash: kubectl: command not found
I expected gcloud components install to set path variables so that I can call kubectl. Looks like that has not happened. I searched for kubectl in my mac but was not able to find it.
How can I get kubectl to work from command line?
Solution 1:[1]
Short answer:
On macOS, you may need to add a symlink: sudo ln /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin/kubectl /usr/local/bin/kubectl
Long answer:
I believe this is caused by installing kubectl via homebrew, then via gcloud, and then uninstalling the homebrew managed tool. homebrew will remove its symlink but gcloud doesn't add it back even when you reinstall kubectl.
To see if this is affecting you on macOS:
See if gcloud has installed kubectl:
gcloud info | grep -i kubectl
- If you are having the problem I am, I'd expect to see the output look something like this:
kubectl: [2019.05.31] Kubectl on PATH: [False]
- When working you should see something like this:
kubectl: [2019.05.31] Kubectl on PATH: [/usr/local/bin/kubectl] /usr/local/bin/kubectl
- If you are having the problem I am, I'd expect to see the output look something like this:
Check for the symlink:
ls -la /usr/local/bin | grep -i google-cloud-sdk
. That will show your links to google cloud binaries.- If
kubectl
isn't on the list then runsudo ln /usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/bin/kubectl /usr/local/bin/kubectl
- If
Solution 2:[2]
The gcloud info
command will tell you if and where kubectl is installed.
Per https://kubernetes.io/docs/tasks/tools/install-kubectl/, you can install kubectl
with brew install kubernetes-cli
. Alternatively, you can install the Google Cloud SDK per https://cloud.google.com/sdk/docs/quickstart-macos, and then install kubectl
with gcloud components install kubectl
.
Solution 3:[3]
Just to update and add more clarity around this:
If you did not install kubectl
via Homebrew but chose to do
gcloud components install kubectl
instead then the binary is installed inside the bin
folder of your gcloud install folder. Even if your gcloud bin
folder is already on your shell's PATH
it wont see kubectl
right away unless you start a new shell or run hash -r
(bash / zsh) to tell your shell to discard its cached paths.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|---|
Solution 1 | Mark |
Solution 2 | Harrison Gregg |
Solution 3 | Eno |