15 KiB
reviewers | title | content_template | weight | card | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Install and Set Up kubectl | templates/task | 10 |
|
{{% capture overview %}} The Kubernetes command-line tool, kubectl, allows you to run commands against Kubernetes clusters. You can use kubectl to deploy applications, inspect and manage cluster resources, and view logs. For a complete list of kubectl operations, see Overview of kubectl. {{% /capture %}}
{{% capture prerequisites %}} You must use a kubectl version that is within one minor version difference of your cluster. For example, a v1.2 client should work with v1.1, v1.2, and v1.3 master. Using the latest version of kubectl helps avoid unforeseen issues. {{% /capture %}}
{{% capture steps %}}
Install kubectl on Linux
Install kubectl binary with curl on Linux
-
Download the latest release with the command:
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
To download a specific version, replace the
$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)
portion of the command with the specific version.For example, to download version {{< param "fullversion" >}} on Linux, type:
curl -LO https://storage.googleapis.com/kubernetes-release/release/{{< param "fullversion" >}}/bin/linux/amd64/kubectl
-
Make the kubectl binary executable.
chmod +x ./kubectl
-
Move the binary in to your PATH.
sudo mv ./kubectl /usr/local/bin/kubectl
-
Test to ensure the version you installed is up-to-date:
kubectl version
Install using native package management
{{< tabs name="kubectl_install" >}} {{< tab name="Ubuntu, Debian or HypriotOS" codelang="bash" >}} 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 {{< /tab >}} {{< tab name="CentOS, RHEL or Fedora" codelang="bash" >}}cat < /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/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg EOF yum install -y kubectl {{< /tab >}} {{< /tabs >}}
Install with snap
If you are on Ubuntu or another Linux distribution that support snap package manager, kubectl is available as a snap application.
-
Switch to the snap user and run the installation command:
sudo snap install kubectl --classic
-
Test to ensure the version you installed is up-to-date:
kubectl version
Install kubectl on macOS
Install kubectl binary with curl on macOS
-
Download the latest release:
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl
To download a specific version, replace the
$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)
portion of the command with the specific version.For example, to download version {{< param "fullversion" >}} on macOS, type:
curl -LO https://storage.googleapis.com/kubernetes-release/release/{{< param "fullversion" >}}/bin/darwin/amd64/kubectl
-
Make the kubectl binary executable.
chmod +x ./kubectl
-
Move the binary in to your PATH.
sudo mv ./kubectl /usr/local/bin/kubectl
-
Test to ensure the version you installed is up-to-date:
kubectl version
Install with Homebrew on macOS
If you are on macOS and using Homebrew package manager, you can install kubectl with Homebrew.
-
Run the installation command:
brew install kubernetes-cli
-
Test to ensure the version you installed is up-to-date:
kubectl version
Install with Macports on macOS
If you are on macOS and using Macports package manager, you can install kubectl with Macports.
-
Run the installation command:
sudo port selfupdate sudo port install kubectl
-
Test to ensure the version you installed is up-to-date:
kubectl version
Install kubectl on Windows
Install kubectl binary with curl on Windows
-
Download the latest release {{< param "fullversion" >}} from [this link](https://storage.googleapis.com/kubernetes-release/release/{{< param "fullversion" >}}/bin/windows/amd64/kubectl.exe).
Or if you have
curl
installed, use this command:curl -LO https://storage.googleapis.com/kubernetes-release/release/{{< param "fullversion" >}}/bin/windows/amd64/kubectl.exe
To find out the latest stable version (for example, for scripting), take a look at https://storage.googleapis.com/kubernetes-release/release/stable.txt.
-
Add the binary in to your PATH.
-
Test to ensure the version you installed is up-to-date:
kubectl version
Install with Powershell from PSGallery
If you are on Windows and using Powershell Gallery package manager, you can install and update kubectl with Powershell.
-
Run the installation commands (making sure to specify a
DownloadLocation
):Install-Script -Name install-kubectl -Scope CurrentUser -Force install-kubectl.ps1 [-DownloadLocation <path>]
{{< note >}}If you do not specify a
DownloadLocation
,kubectl
will be installed in the user's temp Directory.{{< /note >}}The installer creates
$HOME/.kube
and instructs it to create a config file -
Test to ensure the version you installed is up-to-date:
kubectl version
{{< note >}}Updating the installation is performed by rerunning the two commands listed in step 1.{{< /note >}}
Install on Windows using Chocolatey or Scoop
To install kubectl on Windows you can use either Chocolatey package manager or Scoop command-line installer. {{< tabs name="kubectl_win_install" >}} {{% tab name="choco" %}}
choco install kubernetes-cli
{{% /tab %}} {{% tab name="scoop" %}}
scoop install kubectl
{{% /tab %}} {{< /tabs >}} 2. Test to ensure the version you installed is up-to-date:
```
kubectl version
```
-
Navigate to your home directory:
cd %USERPROFILE%
-
Create the
.kube
directory:mkdir .kube
-
Change to the
.kube
directory you just created:cd .kube
-
Configure kubectl to use a remote Kubernetes cluster:
New-Item config -type file
{{< note >}}Edit the config file with a text editor of your choice, such as Notepad.{{< /note >}}
Download as part of the Google Cloud SDK
You can install kubectl as part of the Google Cloud SDK.
-
Install the Google Cloud SDK.
-
Run the
kubectl
installation command:gcloud components install kubectl
-
Test to ensure the version you installed is up-to-date:
kubectl version
Verifying kubectl configuration
In order for kubectl to find and access a Kubernetes cluster, it needs a kubeconfig file, which is created automatically when you create a cluster using kube-up.sh
or successfully deploy a Minikube cluster. By default, kubectl configuration is located at ~/.kube/config
.
Check that kubectl is properly configured by getting the cluster state:
kubectl cluster-info
If you see a URL response, kubectl is correctly configured to access your cluster.
If you see a message similar to the following, kubectl is not configured correctly or is not able to connect to a Kubernetes cluster.
The connection to the server <server-name:port> was refused - did you specify the right host or port?
For example, if you are intending to run a Kubernetes cluster on your laptop (locally), you will need a tool like Minikube to be installed first and then re-run the commands stated above.
If kubectl cluster-info returns the url response but you can't access your cluster, to check whether it is configured properly, use:
kubectl cluster-info dump
Optional kubectl configurations
Enabling shell autocompletion
kubectl provides autocompletion support for Bash and Zsh, which can save you a lot of typing.
Below are the procedures to set up autocompletion for Bash (including the difference between Linux and macOS) and Zsh.
{{< tabs name="kubectl_autocompletion" >}}
{{% tab name="Bash on Linux" %}}
Introduction
The kubectl completion script for Bash can be generated with the command kubectl completion bash
. Sourcing the completion script in your shell enables kubectl autocompletion.
However, the completion script depends on bash-completion, which means that you have to install this software first (you can test if you have bash-completion already installed by running type _init_completion
).
Install bash-completion
bash-completion is provided by many package managers (see here). You can install it with apt-get install bash-completion
or yum install bash-completion
, etc.
The above commands create /usr/share/bash-completion/bash_completion
, which is the main script of bash-completion. Depending on your package manager, you have to manually source this file in your ~/.bashrc
file.
To find out, reload your shell and run type _init_completion
. If the command succeeds, you're already set, otherwise add the following to your ~/.bashrc
file:
source /usr/share/bash-completion/bash_completion
Reload your shell and verify that bash-completion is correctly installed by typing type _init_completion
.
Enable kubectl autocompletion
You now need to ensure that the kubectl completion script gets sourced in all your shell sessions. There are two ways in which you can do this:
-
Source the completion script in your
~/.bashrc
file:echo 'source <(kubectl completion bash)' >>~/.bashrc
-
Add the completion script to the
/etc/bash_completion.d
directory:kubectl completion bash >/etc/bash_completion.d/kubectl
{{< note >}}
bash-completion sources all completion scripts in /etc/bash_completion.d
.
{{< /note >}}
Both approaches are equivalent. After reloading your shell, kubectl autocompletion should be working.
{{% /tab %}}
{{% tab name="Bash on macOS" %}}
Introduction
The kubectl completion script for Bash can be generated with kubectl completion bash
. Sourcing this script in your shell enables kubectl completion.
However, the kubectl completion script depends on bash-completion which you thus have to previously install.
{{< warning>}} there are two versions of bash-completion, v1 and v2. V1 is for Bash 3.2 (which is the default on macOS), and v2 is for Bash 4.1+. The kubectl completion script doesn't work correctly with bash-completion v1 and Bash 3.2. It requires bash-completion v2 and Bash 4.1+. Thus, to be able to correctly use kubectl completion on macOS, you have to install and use Bash 4.1+ (instructions). The following instructions assume that you use Bash 4.1+ (that is, any Bash version of 4.1 or newer). {{< /warning >}}
Install bash-completion
{{< note >}} As mentioned, these instructions assume you use Bash 4.1+, which means you will install bash-completion v2 (in contrast to Bash 3.2 and bash-completion v1, in which case kubectl completion won't work). {{< /note >}}
You can test if you have bash-completion v2 already installed with type _init_completion
. If not, you can install it with Homebrew:
brew install bash-completion@2
As stated in the output of this command, add the following to your ~/.bashrc
file:
export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d"
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"
Reload your shell and verify that bash-completion v2 is correctly installed with type _init_completion
.
Enable kubectl autocompletion
You now have to ensure that the kubectl completion script gets sourced in all your shell sessions. There are multiple ways to achieve this:
-
Source the completion script in your
~/.bashrc
file:echo 'source <(kubectl completion bash)' >>~/.bashrc
-
Add the completion script to the
/usr/local/etc/bash_completion.d
directory:kubectl completion bash >/usr/local/etc/bash_completion.d/kubectl
-
If you installed kubectl with Homebrew (as explained above), then the kubectl completion script should already be in
/usr/local/etc/bash_completion.d/kubectl
. In that case, you don't need to do anything.
{{< note >}}
the Homebrew installation of bash-completion v2 sources all the files in the BASH_COMPLETION_COMPAT_DIR
directory, that's why the latter two methods work.
{{< /note >}}
In any case, after reloading your shell, kubectl completion should be working. {{% /tab %}}
{{% tab name="Zsh" %}}
The kubectl completion script for Zsh can be generated with the command kubectl completion zsh
. Sourcing the completion script in your shell enables kubectl autocompletion.
To do so in all your shell sessions, add the following to your ~/.zshrc
file:
source <(kubectl completion zsh)
After reloading your shell, kubectl autocompletion should be working.
If you get an error like complete:13: command not found: compdef
, then add the following to the beginning of your ~/.zshrc
file:
autoload -Uz compinit
compinit
{{% /tab %}} {{< /tabs >}}
{{% /capture %}}
{{% capture whatsnext %}}
- Install Minikube
- See the getting started guides for more about creating clusters.
- Learn how to launch and expose your application.
- If you need access to a cluster you didn't create, see the Sharing Cluster Access document.
- Read the kubectl reference docs {{% /capture %}}