What is PDB (PodDisruptionBudget)?
PDB = Pod Disruption Budget
➡️ It is a Kubernetes object that controls how many pods can be down at the same time during planned (voluntary) disruptions.
Don’t allow too many pods to go down together during maintenance or updates.
Why we need PDB?
In Kubernetes, pods can be stopped during:
- Node maintenance (
kubectl drain) - Cluster upgrades
- Auto-scaling
- Rolling updates
Without PDB → Kubernetes may delete many pods → Application downtime ❌
With PDB → Kubernetes ensures minimum pods stay running ✅
Key Concepts in PDB
There are 2 main fields:
🔹 1. minAvailable
- Minimum pods that must be running.
- Example:
minAvailable: 2 Note: Always keep at least 2 pods alive
2. maxUnavailable
- Max pods that can go down
- Example:
maxUnavailable: 1Note: Only 1 pod can be down at a time
3. Basic Example (Real YAML)
Example: Web app with 3 replicas
apiVersion: policy/v1kind: PodDisruptionBudgetmetadata: name: web-app-pdbspec: minAvailable: 2 selector: matchLabels: app: web-app
Meaning:
- You have 3 pods
- Kubernetes ensures at least 2 always running
- Only 1 pod can be stopped
How to Use PDB (Step-by-Step)
Step 1: Create your Deployment
kubectl apply -f deployment.yaml
Step 2: Create PDB
kubectl apply -f pdb.yamlOR kubectl create pdb my-pdb --selector=app=nginx --min-available=1
Step 3: Check PDB
kubectl get pdbNAME MIN AVAILABLE MAX UNAVAILABLE ALLOWED DISRUPTIONSweb-app-pdb 2 N/A 1
Step 4: Describe PDB (details)
kubectl describe pdb web-app-pdb