Pod Disruption Budgets (PDBs) are crucial for maintaining application availability during voluntary disruptions like node drains or cluster upgrades.
Understanding PDB Basics
PDBs define the minimum number of pods that must remain available during voluntary disruptions.
Basic PDB Configuration
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: app-pdb
spec:
minAvailable: 2
selector:
matchLabels:
app: critical-service
Implementation Strategies
1. Absolute vs. Percentage Values
Choose between:
minAvailable: 2
: Absolute numberminAvailable: "50%"
: Percentage-based
2. Using maxUnavailable
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: app-pdb
spec:
maxUnavailable: 1
selector:
matchLabels:
app: critical-service
Best Practices
-
PDB Calculation
- Consider deployment size
- Account for node failures
- Factor in scaling operations
-
Common Configurations
- Stateful applications:
minAvailable: "50%"
- Critical services:
maxUnavailable: 1
- Batch jobs: No PDB needed
- Stateful applications:
Real-World Example
# High-availability database cluster
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: database-pdb
spec:
minAvailable: "75%"
selector:
matchLabels:
app: database
tier: production
Implement these patterns to ensure application resilience during cluster maintenance.