---
assignees:
- bgrant0607
- mikedanese
title: Installing and Setting Up kubectl
redirect_from:
- "/docs/tasks/kubectl/install/"
- "/docs/tasks/kubectl/install.html"
- "/docs/user-guide/prereqs/"
- "/docs/user-guide/prereqs.html" 
---
{% 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 %}

{% capture prerequisites %}
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. 
{% endcapture %}

Here are a few methods to install kubectl.
{% capture steps %}
## Install kubectl binary via curl

  1. Download the latest release with the command:

```shell
# OS X
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/darwin/amd64/kubectl

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

# Windows
curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/windows/amd64/kubectl.exe
```
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 1.4.6 on MacOS, type:
`curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.4.6/bin/darwin/amd64/kubectl`

  2. Make the kubectl binary executable.
```shell
chmod +x ./kubectl
```
  3. Move the binary in to your PATH. 
```shell
sudo mv ./kubectl /usr/local/bin/kubectl
```

## 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`:
  ```shell
gcloud components install kubectl
```
  3. Run `kubectl version` to verify that the verison 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:
```shell
brew install kubectl
```
  2. Run `kubectl version` to verify that the verison you've installed is sufficiently up-to-date.

## Configuring kubectl

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`.

## Check the kubectl configuration
Check that kubectl is properly configured by getting the cluster state:

```shell
$ 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 correctly configured:
```shell
The connection to the server <server-name:port> was refused - did you specify the right host or port?
```
## 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.

Common examples are provided here. For more details, consult `kubectl completion -h`.

### On Linux, using bash

To add kubectl autocompletion to your current shell, run `source <(kubectl completion bash)`.

To add kubectl autocompletion to your profile, so it is automatically loaded in future shells run:

```shell
echo "source <(kubectl completion bash)" >> ~/.bashrc
```

### On macOS, using bash
On macOS, autocompletion works if you install using `brew install kubectl`,
and not if you downloaded kubectl directly.

Install the bash-completion support:

```shell
brew install bash-completion
```

To add kubectl autocompletion to your current shell, run:

```shell
source $(brew --prefix)/etc/bash_completion
source <(kubectl completion bash)
```

To add kubectl autocompletion to your profile (so it is automatically loaded in future shells):

```shell
echo "source $(brew --prefix)/etc/bash_completion" >> ~/.bash_profile
echo "source <(kubectl completion bash)" >> ~/.bash_profile
```
{% endcapture %}
{% capture whatsnext %}
[Learn how to launch and expose your application.](/docs/user-guide/quick-start)
{% endcapture %}
{% include templates/task.md %}
