2017-03-16 21:53:31 +00:00
---
2018-02-18 19:29:37 +00:00
reviewers:
2017-03-16 21:53:31 +00:00
- bgrant0607
- mikedanese
2017-06-08 18:58:27 +00:00
title: Install and Set Up kubectl
2018-05-05 16:00:51 +00:00
content_template: templates/task
2017-03-16 21:53:31 +00:00
---
2017-07-28 15:23:11 +00:00
2018-05-05 16:00:51 +00:00
{{% capture overview %}}
2017-10-10 04:08:58 +00:00
Use the Kubernetes command-line tool, [kubectl ](/docs/user-guide/kubectl/ ), to deploy and manage applications on Kubernetes. Using kubectl, you can inspect cluster resources; create, delete, and update components; and look at your new cluster and bring up example apps.
2018-05-05 16:00:51 +00:00
{{% /capture %}}
2017-03-16 21:53:31 +00:00
2018-05-05 16:00:51 +00:00
{{% capture prerequisites %}}
2017-05-16 23:44:39 +00:00
Use a version of kubectl that is the same version as your server or later. Using an older kubectl with a newer server might produce validation errors.
2018-05-05 16:00:51 +00:00
{{% /capture %}}
2017-03-16 21:53:31 +00:00
2018-03-20 06:41:00 +00:00
## Install kubectl
2017-03-16 21:53:31 +00:00
Here are a few methods to install kubectl.
2018-03-20 06:41:00 +00:00
2018-05-05 16:00:51 +00:00
{{% capture steps %}}
2018-04-14 22:45:58 +00:00
## Install kubectl binary via native package management
2018-05-05 16:00:51 +00:00
{{< tabs name = "kubectl_install" > }}
{{< tab name = "Ubuntu, Debian or HypriotOS" codelang = "bash" > }}
2018-04-14 22:45:58 +00:00
apt-get update & & apt-get install -y apt-transport-https
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add -
cat < < EOF > /etc/apt/sources.list.d/kubernetes.list
deb http://apt.kubernetes.io/ kubernetes-xenial main
EOF
apt-get update
apt-get install -y kubectl
2018-05-05 16:00:51 +00:00
{{< / tab > }}
{{< tab name = "CentOS, RHEL or Fedora" codelang = "bash" > }}cat < < EOF > /etc/yum.repos.d/kubernetes.repo
2018-04-14 22:45:58 +00:00
[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
2018-05-05 16:00:51 +00:00
{{< / tab > }}
{{< / tabs > }}
2018-04-14 22:45:58 +00:00
## Install with snap on Ubuntu
kubectl is available as a [snap ](https://snapcraft.io/ ) application.
1. If you are on Ubuntu or one of other Linux distributions that support [snap ](https://snapcraft.io/docs/core/install ) package manager, you can install with:
2018-05-11 20:06:27 +00:00
sudo snap install kubectl --classic
2018-04-14 22:45:58 +00:00
2. Run `kubectl version` to verify that the version you've installed is sufficiently up-to-date.
## Install with Homebrew on macOS
1. If you are on macOS and using [Homebrew ](https://brew.sh/ ) package manager, you can install with:
2018-05-11 20:06:27 +00:00
brew install kubectl
2018-04-14 22:45:58 +00:00
2. Run `kubectl version` to verify that the version you've installed is sufficiently up-to-date.
## Install with Powershell from PSGallery
1. If you are on Windows and using [Powershell Gallery ](https://www.powershellgallery.com/ ) package manager, you can install and update with:
2018-05-11 20:06:27 +00:00
Install-Script -Name install-kubectl -Scope CurrentUser -Force
install-kubectl.ps1 [-DownloadLocation < path > ]
2018-04-14 22:45:58 +00:00
If no Downloadlocation is specified, kubectl will be installed in users temp Directory
2. The installer creates $HOME/.kube and instructs it to create a config file
3. Updating
re-run Install-Script to update the installer
re-run install-kubectl.ps1 to install latest binaries
## Install with Chocolatey on Windows
1. If you are on Windows and using [Chocolatey ](https://chocolatey.org ) package manager, you can install with:
2018-05-11 20:06:27 +00:00
choco install kubernetes-cli
2018-04-14 22:45:58 +00:00
2. Run `kubectl version` to verify that the version you've installed is sufficiently up-to-date.
3. Configure kubectl to use a remote Kubernetes cluster:
2018-05-11 20:06:27 +00:00
cd C:\users\yourusername (Or wherever your %HOME% directory is)
mkdir .kube
cd .kube
New-Item config -type file
2018-04-14 22:45:58 +00:00
Edit the config file with a text editor of your choice, such as Notepad for example.
## Download as part of the Google Cloud SDK
kubectl can be installed as part of the Google Cloud SDK.
1. Install the [Google Cloud SDK ](https://cloud.google.com/sdk/ ).
2. Run the following command to install `kubectl` :
2018-05-11 20:06:27 +00:00
gcloud components install kubectl
2018-04-14 22:45:58 +00:00
3. Run `kubectl version` to verify that the version you've installed is sufficiently up-to-date.
## Install kubectl binary via curl
2017-03-16 21:53:31 +00:00
2018-05-05 16:00:51 +00:00
{{< tabs name = "kubectl_install_curl" > }}
{{% tab name="macos" %}}
2017-05-31 19:59:27 +00:00
1. Download the latest release with the command:
2018-05-05 16:00:51 +00:00
```
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl
```
2017-05-31 19:59:27 +00:00
2017-05-16 23:44:39 +00:00
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.
2017-05-31 19:59:27 +00:00
2018-05-05 16:00:51 +00:00
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
```
2017-05-31 19:59:27 +00:00
2. Make the kubectl binary executable.
```
chmod +x ./kubectl
```
2017-05-16 23:44:39 +00:00
3. Move the binary in to your PATH.
2017-05-31 19:59:27 +00:00
```
sudo mv ./kubectl /usr/local/bin/kubectl
```
2018-05-05 16:00:51 +00:00
{{% /tab %}}
{{% tab name="linux" %}}
2017-05-31 19:59:27 +00:00
1. Download the latest release with the command:
2018-05-05 16:00:51 +00:00
```
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl
```
2017-05-31 19:59:27 +00:00
2017-05-16 23:44:39 +00:00
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.
2017-05-31 19:59:27 +00:00
2018-05-05 16:00:51 +00:00
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
```
2017-05-31 19:59:27 +00:00
2. Make the kubectl binary executable.
```
chmod +x ./kubectl
```
2017-05-16 23:44:39 +00:00
3. Move the binary in to your PATH.
2017-05-31 19:59:27 +00:00
```
sudo mv ./kubectl /usr/local/bin/kubectl
```
2018-05-05 16:00:51 +00:00
{{% /tab %}}
{{% tab name="win" %}}
1. Download the latest release {{< param " fullversion " > }} from [this link ](https://storage.googleapis.com/kubernetes-release/release/{{< param "fullversion" >}}/bin/windows/amd64/kubectl.exe ).
2017-05-31 19:59:27 +00:00
2017-06-02 07:32:19 +00:00
Or if you have `curl` installed, use this command:
2017-05-31 19:59:27 +00:00
2018-05-05 16:00:51 +00:00
```
curl -LO https://storage.googleapis.com/kubernetes-release/release/{{< param " fullversion " > }}/bin/windows/amd64/kubectl.exe
```
2017-05-31 19:59:27 +00:00
2017-08-17 23:47:18 +00:00
To find out the latest stable version (for example, for scripting), take a look at [https://storage.googleapis.com/kubernetes-release/release/stable.txt ](https://storage.googleapis.com/kubernetes-release/release/stable.txt ).
2017-05-31 19:59:27 +00:00
2017-06-02 07:32:19 +00:00
2. Add the binary in to your PATH.
2018-05-05 16:00:51 +00:00
{{% /tab %}}
{{< / tabs > }}
2017-05-31 19:59:27 +00:00
2017-03-16 21:53:31 +00:00
2017-06-08 18:58:27 +00:00
## Configure kubectl
2017-03-16 21:53:31 +00:00
2017-10-05 00:31:51 +00:00
In order for kubectl to find and access a Kubernetes cluster, it needs a [kubeconfig file ](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/ ), which is created automatically when you create a cluster using kube-up.sh or successfully deploy a Minikube cluster. See the [getting started guides ](/docs/setup/ ) for more about creating clusters. If you need access to a cluster you didn't create, see the [Sharing Cluster Access document ](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/ ).
2017-05-15 23:44:55 +00:00
By default, kubectl configuration is located at `~/.kube/config` .
2017-03-16 21:53:31 +00:00
2017-05-15 23:44:55 +00:00
## Check the kubectl configuration
2017-03-16 21:53:31 +00:00
Check that kubectl is properly configured by getting the cluster state:
```shell
2017-08-17 23:25:11 +00:00
kubectl cluster-info
2017-03-16 21:53:31 +00:00
```
2017-05-16 23:44:39 +00:00
If you see a URL response, kubectl is correctly configured to access your cluster.
2017-03-16 21:53:31 +00:00
2018-02-12 22:56:50 +00:00
If you see a message similar to the following, kubectl is not correctly configured or not able to connect to a Kubernetes cluster.
2017-06-23 08:22:08 +00:00
2017-05-15 23:44:55 +00:00
```shell
The connection to the server < server-name:port > was refused - did you specify the right host or port?
```
2018-02-12 22:56:50 +00:00
2018-04-14 22:45:58 +00:00
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.
2018-02-12 22:56:50 +00:00
2017-11-08 08:58:54 +00:00
If kubectl cluster-info returns the url response but you can't access your cluster, to check whether it is configured properly, use:
2017-11-08 07:52:10 +00:00
```shell
kubectl cluster-info dump
```
2017-06-23 08:22:08 +00:00
2017-03-16 21:53:31 +00:00
## Enabling shell autocompletion
kubectl includes autocompletion support, which can save a lot of typing!
The completion script itself is generated by kubectl, so you typically just need to invoke it from your profile.
2017-05-15 23:44:55 +00:00
Common examples are provided here. For more details, consult `kubectl completion -h` .
2017-03-16 21:53:31 +00:00
### On Linux, using bash
2017-05-15 23:44:55 +00:00
To add kubectl autocompletion to your current shell, run `source <(kubectl completion bash)` .
2017-03-16 21:53:31 +00:00
2017-05-15 23:44:55 +00:00
To add kubectl autocompletion to your profile, so it is automatically loaded in future shells run:
2017-03-16 21:53:31 +00:00
```shell
echo "source < (kubectl completion bash)" >> ~/.bashrc
```
2017-05-15 23:44:55 +00:00
### On macOS, using bash
2017-05-16 23:44:39 +00:00
On macOS, you will need to install bash-completion support via [Homebrew ](https://brew.sh/ ) first:
2017-03-16 21:53:31 +00:00
```shell
2017-05-16 23:44:39 +00:00
## If running Bash 3.2 included with macOS
2017-03-16 21:53:31 +00:00
brew install bash-completion
2017-05-16 23:44:39 +00:00
## or, if running Bash 4.1+
2017-06-16 22:53:30 +00:00
brew install bash-completion@2
2017-03-16 21:53:31 +00:00
```
2017-05-16 23:44:39 +00:00
Follow the "caveats" section of brew's output to add the appropriate bash completion path to your local .bashrc.
2017-03-16 21:53:31 +00:00
2017-05-16 23:44:39 +00:00
If you've installed kubectl using the [Homebrew instructions ](#install-with-homebrew-on-macos ) then kubectl completion should start working immediately.
2017-06-28 18:49:52 +00:00
If you have installed kubectl manually, you need to add kubectl autocompletion to the bash-completion:
2017-03-16 21:53:31 +00:00
```shell
2017-06-28 18:49:52 +00:00
kubectl completion bash > $(brew --prefix)/etc/bash_completion.d/kubectl
2017-03-16 21:53:31 +00:00
```
2017-05-16 23:44:39 +00:00
2017-08-14 12:31:26 +00:00
The Homebrew project is independent from Kubernetes, so the bash-completion packages are not guaranteed to work.
2017-05-16 23:44:39 +00:00
2017-10-26 15:50:09 +00:00
### Using Zsh
If you are using zsh edit the ~/.zshrc file and add the following code to enable kubectl autocompletion:
```shell
if [ $commands[kubectl] ]; then
source < (kubectl completion zsh)
fi
```
Or when using [Oh-My-Zsh ](http://ohmyz.sh/ ), edit the ~/.zshrc file and update the `plugins=` line to include the kubectl plugin.
2017-10-03 03:43:54 +00:00
2017-08-01 07:52:12 +00:00
```shell
2017-10-03 03:43:54 +00:00
source < (kubectl completion zsh)
2017-08-01 07:52:12 +00:00
```
2018-05-05 16:00:51 +00:00
{{% capture whatsnext %}}
2017-10-05 00:31:51 +00:00
[Learn how to launch and expose your application. ](/docs/tasks/access-application-cluster/service-access-application-cluster/ )
2018-05-05 16:00:51 +00:00
{{% /capture %}}