2017-03-16 21:53:31 +00:00
---
2017-08-03 23:22:52 +00:00
approvers:
2017-03-16 21:53:31 +00:00
- bgrant0607
- mikedanese
2017-06-08 18:58:27 +00:00
title: Install and Set Up kubectl
2017-03-16 21:53:31 +00:00
---
2017-07-28 15:23:11 +00:00
2017-05-15 23:44:55 +00:00
{% capture overview %}
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.
{% endcapture %}
2017-03-16 21:53:31 +00:00
2017-05-15 23:44:55 +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.
2017-05-15 23:44:55 +00:00
{% endcapture %}
2017-03-16 21:53:31 +00:00
Here are a few methods to install kubectl.
2017-05-15 23:44:55 +00:00
{% capture steps %}
2017-04-05 05:07:57 +00:00
## Install kubectl binary via curl
2017-03-16 21:53:31 +00:00
2017-05-31 19:59:27 +00:00
{% capture macos %}
1. Download the latest release with the command:
2017-08-15 06:56:06 +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
2017-06-02 07:32:19 +00:00
For example, to download version {{page.fullversion}} on MacOS, type:
2017-05-31 19:59:27 +00:00
2017-08-15 06:56:06 +00:00
curl -LO https://storage.googleapis.com/kubernetes-release/release/{{page.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
```
{% endcapture %}
{% capture linux %}
1. Download the latest release with the command:
2017-08-17 23:25:11 +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
2017-05-16 23:44:39 +00:00
For example, to download version {{page.fullversion}} on Linux, type:
2017-05-31 19:59:27 +00:00
2017-08-17 23:25:11 +00:00
curl -LO https://storage.googleapis.com/kubernetes-release/release/{{page.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
```
{% endcapture %}
{% capture win %}
2017-06-02 07:32:19 +00:00
1. Download the latest release {{page.fullversion}} from [this link ](https://storage.googleapis.com/kubernetes-release/release/{{page.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
2017-08-17 23:25:11 +00:00
curl -LO https://storage.googleapis.com/kubernetes-release/release/{{page.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.
2017-05-31 19:59:27 +00:00
{% endcapture %}
{% assign tab_names = "macOS,Linux,Windows" | split: ',' | compact %}
{% assign tab_contents = site.emptyArray | push: macos | push: linux | push: win %}
{% include tabs.md %}
2017-03-16 21:53:31 +00:00
## Download as part of the Google Cloud SDK
2017-05-15 23:44:55 +00:00
kubectl can be installed as part of the Google Cloud SDK.
2017-03-16 21:53:31 +00:00
2017-06-23 08:22:08 +00:00
1. Install the [Google Cloud SDK ](https://cloud.google.com/sdk/ ).
2. Run the following command to install `kubectl` :
2017-08-15 06:56:06 +00:00
gcloud components install kubectl
2017-06-23 08:22:08 +00:00
2017-08-17 18:45:12 +00:00
3. Run `kubectl version` to verify that the version you've installed is sufficiently up-to-date.
2017-06-23 08:22:08 +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:
2017-08-15 06:56:06 +00:00
sudo snap install kubectl --classic
2017-06-23 08:22:08 +00:00
2017-08-17 18:45:12 +00:00
2. Run `kubectl version` to verify that the version you've installed is sufficiently up-to-date.
2017-05-16 23:44:39 +00:00
2017-04-05 05:07:57 +00:00
## Install with Homebrew on macOS
2017-03-16 21:53:31 +00:00
2017-06-23 08:22:08 +00:00
1. If you are on macOS and using [Homebrew ](https://brew.sh/ ) package manager, you can install with:
2017-08-15 06:56:06 +00:00
brew install kubectl
2017-06-23 08:22:08 +00:00
2017-08-17 18:45:12 +00:00
2. Run `kubectl version` to verify that the version you've installed is sufficiently up-to-date.
2017-03-16 21:53:31 +00:00
2017-06-06 20:17:33 +00:00
## Install with Chocolatey on Windows
2017-06-23 08:22:08 +00:00
1. If you are on Windows and using [Chocolatey ](https://chocolatey.org ) package manager, you can install with:
2017-08-15 06:56:06 +00:00
choco install kubernetes-cli
2017-06-23 08:22:08 +00:00
2017-08-17 18:45:12 +00:00
2. Run `kubectl version` to verify that the version you've installed is sufficiently up-to-date.
2017-08-14 12:31:26 +00:00
3. Configure kubectl to use a remote Kubernetes cluster:
2017-06-23 08:22:08 +00:00
2017-08-15 06:56:06 +00:00
cd C:\users\yourusername (Or wherever your %HOME% directory is)
mkdir .kube
cd .kube
touch config
2017-06-23 08:22:08 +00:00
2017-06-06 20:17:33 +00:00
Edit the config file with a text editor of your choice, such as Notepad for example.
2017-06-08 18:58:27 +00:00
## Configure kubectl
2017-03-16 21:53:31 +00:00
2017-05-15 23:44:55 +00:00
In order for kubectl to find and access a Kubernetes cluster, it needs a [kubeconfig file ](/docs/concepts/cluster-administration/authenticate-across-clusters-kubeconfig/ ), 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/getting-started-guides/ ) for more about creating clusters. If you need access to a cluster you didn't create, see the [Sharing Cluster Access document ](/docs/tasks/administer-cluster/share-configuration/ ).
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
2017-05-15 23:44:55 +00:00
If you see a message similar to the following, kubectl is not correctly configured:
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?
```
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-08-01 07:52:12 +00:00
### Using Oh-My-Zsh
When using [Oh-My-Zsh ](http://ohmyz.sh/ ), edit the ~/.zshrc file and update the `plugins=` line to include the kubectl plugin.
```shell
plugins=(git zsh-completions kubectl)
```
2017-05-15 23:44:55 +00:00
{% endcapture %}
{% capture whatsnext %}
2017-03-16 21:53:31 +00:00
[Learn how to launch and expose your application. ](/docs/user-guide/quick-start )
2017-05-15 23:44:55 +00:00
{% endcapture %}
{% include templates/task.md %}