Installing and Configuring kubectl
1. Installing kubectl CLI
| OS | Install Command |
| macOS | brew install kubectl |
| Linux | curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl" |
| Windows | choco install kubernetes-cli |
| Verify | kubectl version --client |
2. Configuring kubeconfig File
| Property | Description |
| Default path | ~/.kube/config |
| Env override | KUBECONFIG=/path/a:/path/b (merges) |
| Flag override | kubectl --kubeconfig=path |
| Sections | clusters, users, contexts, current-context |
Example: Minimal kubeconfig
apiVersion: v1
kind: Config
clusters:
- name: prod
cluster:
server: https://api.prod.example.com:6443
certificate-authority: /etc/k8s/ca.crt
users:
- name: alice
user:
client-certificate: /etc/k8s/alice.crt
client-key: /etc/k8s/alice.key
contexts:
- name: prod-alice
context:
cluster: prod
user: alice
namespace: payments
current-context: prod-alice
3. Managing Multiple Contexts
| Command | Action |
kubectl config get-contexts | List contexts |
kubectl config current-context | Show active context |
kubectl config use-context NAME | Switch context |
kubectx / kubens | Quick switchers (3rd-party) |
4. Setting Default Namespace
| Command | Effect |
kubectl config set-context --current --namespace=dev | Set ns for current context |
kubens dev | Same via kubens |
| Command | Output |
kubectl cluster-info | API server + add-on URLs |
kubectl cluster-info dump | Full cluster state (debugging) |
kubectl get componentstatuses | Component health DEPRECATED v1.19+ |
6. Checking kubectl Version
| Command | Output |
kubectl version --client | Client only |
kubectl version -o yaml | Client + server in YAML |
Note: kubectl supports ±1 minor version skew with API server.
7. Enabling kubectl Autocompletion
| Shell | Setup |
| bash | source <(kubectl completion bash) |
| zsh | source <(kubectl completion zsh) |
| fish | kubectl completion fish | source |
8. Using kubectl Aliases
Example: Common aliases
alias k=kubectl
alias kg='kubectl get'
alias kd='kubectl describe'
alias kdel='kubectl delete'
alias kaf='kubectl apply -f'
alias kx='kubectx'
alias kn='kubens'
complete -F __start_kubectl k
| Alias | Expansion |
k | kubectl |
kgp | kubectl get pods |
kaf | kubectl apply -f |
9. Installing kubectl Plugins
| Tool | Description |
| krew | Official plugin manager: kubectl krew install <plugin> |
| kubectl-neat | Strip auto-generated fields from YAML output |
| kubectl-tree | Show owner-reference tree |
| kubectl-stern | Multi-pod log tailing |
| kubectl-ctx/ns | Fast context/namespace switching |
10. Configuring Authentication Methods
| Method | Use Case |
| Client certificates | x509 auth (default for kubeadm) |
| Bearer tokens | ServiceAccount tokens, static tokens |
| OIDC | SSO via identity provider (Okta, Keycloak, Google) |
| Exec plugins | External CLI (aws-iam-authenticator, gke-gcloud-auth-plugin) |
| Webhook | Custom remote auth service |