kubectl Cheat Sheet
By Sameer Alam
· Updated 26 September 2026
Cluster Info
kubectl cluster-info
kubectl version
kubectl get nodes
kubectl get nodes -o wide
kubectl describe node <node-name>
kubectl top nodes
kubectl get --raw /healthz
kubectl get --raw /readyz
Working with Resources
# Get
kubectl get pods # current namespace
kubectl get pods -A # all namespaces
kubectl get pods -n <namespace>
kubectl get pods -o wide # + node, IP
kubectl get pods --show-labels
kubectl get pods -l app = nginx
kubectl get all -n <namespace>
# Describe
kubectl describe pod <name>
kubectl describe deployment <name>
kubectl describe svc <name>
# Apply / create
kubectl apply -f manifest.yaml
kubectl apply -f directory/
kubectl create deployment nginx --image= nginx:1.27.1 --replicas= 3
kubectl create namespace <name>
# Edit / scale
kubectl edit deployment <name>
kubectl scale deployment <name> --replicas= 5
kubectl set image deployment/<name> <container>= <image>:<tag>
kubectl set resources deployment <name> --requests= cpu = 250m,memory= 256Mi --limits= cpu = 500m,memory= 512Mi
# Delete
kubectl delete pod <name>
kubectl delete -f manifest.yaml
kubectl delete deployment <name>
kubectl delete pods -l app = nginx
Flag
Purpose
--dry-run=client
Validate/render locally without sending to the API server
--dry-run=server
Validate against the live API server without persisting
-o yaml / -o json
Full object output
-o wide
Extra columns (node, IP)
-o jsonpath='{...}'
Extract specific fields
--field-selector
Filter by a field, e.g. status.phase!=Running
-w
Watch for changes
Debugging
# Logs
kubectl logs <pod>
kubectl logs <pod> -f # follow
kubectl logs <pod> --previous # last crashed container
kubectl logs <pod> -c <container>
kubectl logs -l app = nginx --tail= 100
# Exec
kubectl exec <pod> -- <command>
kubectl exec -it <pod> -- /bin/bash
kubectl exec <pod> -c <container> -- env
# Port-forward
kubectl port-forward pod/<pod> 8080 :80
kubectl port-forward service/<service> 8080 :80
# Copy files
kubectl cp <pod>:/path/to/file ./local-file
kubectl cp ./local-file <pod>:/path/to/file
# Ephemeral debug container (v1.25+ stable)
kubectl debug <pod> -it --image= busybox:1.36.1 --target= <container>
kubectl debug <pod> -it --image= nicolaka/netshoot --profile= netadmin # tcpdump, iptables
kubectl debug <pod> -it --copy-to= <pod>-debug --container= <container> -- sh # crash-looping pod
kubectl debug node/<node> -it --image= busybox:1.36.1 # node shell; host fs at /host
kubectl run debug --rm -it --image= nicolaka/netshoot -- bash
# Events
kubectl events --for pod/<pod> # events for one object, oldest first
kubectl events -A --types= Warning # only warnings, cluster-wide
kubectl get events -A --sort-by= .metadata.creationTimestamp
kubectl get events -w
# Which pods back a Service
kubectl get endpointslices -l kubernetes.io/service-name= <service>
Rollout Management
kubectl rollout status deployment/<name>
kubectl rollout history deployment/<name>
kubectl rollout undo deployment/<name>
kubectl rollout undo deployment/<name> --to-revision= 2
kubectl rollout restart deployment/<name>
kubectl rollout pause deployment/<name>
kubectl rollout resume deployment/<name>
Contexts and Namespaces
kubectl config get-contexts
kubectl config current-context
kubectl config use-context <context-name>
kubectl config set-context --current --namespace= <namespace>
kubectl config view --minify
Resource Usage and Autoscaling
kubectl top pods
kubectl top pods -n <namespace> --sort-by= memory
kubectl top pods --all-namespaces --sort-by= cpu
kubectl autoscale deployment <name> --min= 2 --max= 10 --cpu-percent= 70
kubectl get hpa
Useful One-Liners
# Pods sorted by restart count
kubectl get pods --sort-by= '.status.containerStatuses[0].restartCount'
# Pods not Running
kubectl get pods --field-selector= status.phase!= Running -A
# Delete all evicted pods
kubectl get pods -A -o json | jq -r '.items[] | select(.status.reason=="Evicted") | "kubectl delete pod \(.metadata.name) -n \(.metadata.namespace)"' | sh
# Every image running in the cluster
kubectl get pods -A -o jsonpath = "{.items[*].spec.containers[*].image}" | tr -s '[[:space:]]' '\n' | sort -u
# Custom columns
kubectl get pods -o custom-columns= NAME:.metadata.name,STATUS:.status.phase,NODE:.spec.nodeName
Kubernetes
Quick Reference