Cluster Info

kubectl cluster-info Display cluster info
kubectl get nodes List all nodes
kubectl get nodes -o wide Nodes with details
kubectl describe node <name> Node details
kubectl top nodes Node resource usage
kubectl api-resources List API resources

Pods

kubectl get pods List pods in namespace
kubectl get pods -A List all pods
kubectl get pods -o wide Pods with node info
kubectl describe pod <name> Pod details
kubectl logs <pod> Pod logs
kubectl logs -f <pod> Follow logs
kubectl logs <pod> -c <container> Container logs
kubectl exec -it <pod> -- /bin/sh Shell into pod
kubectl delete pod <name> Delete pod
kubectl top pods Pod resource usage

Deployments

kubectl get deployments List deployments
kubectl describe deployment <name> Deployment details
kubectl scale deployment <name> --replicas=3 Scale deployment
kubectl rollout status deployment/<name> Rollout status
kubectl rollout history deployment/<name> Rollout history
kubectl rollout undo deployment/<name> Rollback
kubectl set image deployment/<name> <container>=<image> Update image

Services

kubectl get svc List services
kubectl get svc -o wide Services with details
kubectl describe svc <name> Service details
kubectl expose deployment <name> --port=80 --type=LoadBalancer Expose deployment
kubectl port-forward svc/<name> 8080:80 Port forward

ConfigMaps & Secrets

kubectl get configmaps List ConfigMaps
kubectl get secrets List Secrets
kubectl create configmap <name> --from-file=<path> Create from file
kubectl create secret generic <name> --from-literal=key=value Create secret
kubectl get secret <name> -o jsonpath="{.data.password}" | base64 -d Decode secret

Namespaces

kubectl get namespaces List namespaces
kubectl create namespace <name> Create namespace
kubectl config set-context --current --namespace=<name> Switch namespace
kubectl delete namespace <name> Delete namespace

Apply & Create

kubectl apply -f <file.yaml> Apply manifest
kubectl apply -f <directory>/ Apply directory
kubectl create -f <file.yaml> Create resource
kubectl delete -f <file.yaml> Delete from manifest
kubectl diff -f <file.yaml> Diff before apply

Debugging

kubectl get events --sort-by=.metadata.creationTimestamp Recent events
kubectl get pods --field-selector=status.phase=Failed Failed pods
kubectl run debug --image=busybox -it --rm -- /bin/sh Debug pod
kubectl auth can-i create pods Check permissions
kubectl explain pod.spec.containers API docs

Context & Config

kubectl config get-contexts List contexts
kubectl config current-context Current context
kubectl config use-context <name> Switch context
kubectl config view View kubeconfig