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 number
  • minAvailable: "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

  1. PDB Calculation

    • Consider deployment size
    • Account for node failures
    • Factor in scaling operations
  2. Common Configurations

    • Stateful applications: minAvailable: "50%"
    • Critical services: maxUnavailable: 1
    • Batch jobs: No PDB needed

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.