Installing and Configuring kubectl

1. Installing kubectl CLI

OSInstall Command
macOSbrew install kubectl
Linuxcurl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
Windowschoco install kubernetes-cli
Verifykubectl version --client

2. Configuring kubeconfig File

PropertyDescription
Default path~/.kube/config
Env overrideKUBECONFIG=/path/a:/path/b (merges)
Flag overridekubectl --kubeconfig=path
Sectionsclusters, 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

CommandAction
kubectl config get-contextsList contexts
kubectl config current-contextShow active context
kubectl config use-context NAMESwitch context
kubectx / kubensQuick switchers (3rd-party)

4. Setting Default Namespace

CommandEffect
kubectl config set-context --current --namespace=devSet ns for current context
kubens devSame via kubens

5. Viewing Cluster Information

CommandOutput
kubectl cluster-infoAPI server + add-on URLs
kubectl cluster-info dumpFull cluster state (debugging)
kubectl get componentstatusesComponent health DEPRECATED v1.19+

6. Checking kubectl Version

CommandOutput
kubectl version --clientClient only
kubectl version -o yamlClient + server in YAML
Note: kubectl supports ±1 minor version skew with API server.

7. Enabling kubectl Autocompletion

ShellSetup
bashsource <(kubectl completion bash)
zshsource <(kubectl completion zsh)
fishkubectl 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
AliasExpansion
kkubectl
kgpkubectl get pods
kafkubectl apply -f

9. Installing kubectl Plugins

ToolDescription
krewOfficial plugin manager: kubectl krew install <plugin>
kubectl-neatStrip auto-generated fields from YAML output
kubectl-treeShow owner-reference tree
kubectl-sternMulti-pod log tailing
kubectl-ctx/nsFast context/namespace switching

10. Configuring Authentication Methods

MethodUse Case
Client certificatesx509 auth (default for kubeadm)
Bearer tokensServiceAccount tokens, static tokens
OIDCSSO via identity provider (Okta, Keycloak, Google)
Exec pluginsExternal CLI (aws-iam-authenticator, gke-gcloud-auth-plugin)
WebhookCustom remote auth service