Rolling updates can accidentally take down too many pods. PDB guarantees minimum availability.
Create PDB:
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: myapp-pdb
spec:
minAvailable: 2 # Always keep at least 2 pods running
selector:
matchLabels:
app: myapp
Or Use maxUnavailable:
spec:
maxUnavailable: 1 # At most 1 pod can be down at a time
selector:
matchLabels:
app: myapp
Apply:
kubectl apply -f pdb.yaml # Check PDB status kubectl get pdb
What Happens:
Node drain during maintenance → Kubernetes checks PDB → Won’t evict pod if it would violate minimum availability
Zero downtime during cluster maintenance!
