TL;DR
What: Container orchestration platform for automating deployment, scaling, and management.
Why: Run containers at scale with high availability, rolling updates, and self-healing.
Quick Start
Install kubectl:
# 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"
chmod +x kubectl && sudo mv kubectl /usr/local/bin/
# Verify
kubectl version --client
Install Minikube (local cluster):
# macOS
brew install minikube
# Linux
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
Start a cluster:
minikube start
# Verify
kubectl get nodes
Deploy an app:
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
minikube service nginx
Cheatsheet
| Command | Description |
|---|---|
kubectl get pods | List pods |
kubectl get services | List services |
kubectl get deployments | List deployments |
kubectl describe pod NAME | Pod details |
kubectl logs POD | View pod logs |
kubectl exec -it POD -- bash | Shell into pod |
kubectl apply -f file.yaml | Apply config |
kubectl delete -f file.yaml | Delete resources |
kubectl scale deploy NAME --replicas=3 | Scale deployment |
kubectl rollout restart deploy NAME | Restart deployment |
Gotchas
Pod stuck in Pending
# Check events
kubectl describe pod POD_NAME
# Common causes:
# - Insufficient resources → add nodes or reduce requests
# - Image pull error → check image name and registry access
CrashLoopBackOff
# Check logs
kubectl logs POD_NAME --previous
# Common causes:
# - App crash → fix application code
# - Missing config → check ConfigMaps/Secrets
Can’t connect to cluster
# Check current context
kubectl config current-context
# List contexts
kubectl config get-contexts
# Switch context
kubectl config use-context CONTEXT_NAME
Apply vs Create
kubectl create # Create new resource (fails if exists)
kubectl apply # Create or update (idempotent)
# Always prefer apply for production
kubectl apply -f deployment.yaml