PodDisruptionBudget(PDB)
A policy object that limits how many Pods of a deployment can be simultaneously unavailable during voluntary disruptions.
Also known as: PDB
What is PodDisruptionBudget?
A PodDisruptionBudget (PDB) is a Kubernetes policy object that constrains voluntary disruptions — planned events where Kubernetes or administrators intentionally evict or delete Pods, such as node drains for maintenance, Cluster Autoscaler scale-down, Karpenter consolidation, or rolling updates. A PDB specifies either a minimum number of available Pods (minAvailable) or a maximum number of unavailable Pods (maxUnavailable) for a set of Pods matched by label selector.
When a disruption is attempted (e.g., kubectl drain a node), the eviction API checks all PDBs matching the Pods on that node. If the disruption would violate any PDB — taking available count below minAvailable — the eviction is rejected and the drain blocks until the constraint is satisfied (either by other Pods recovering or by timeout). This protection is critical for maintaining service availability during cluster maintenance windows.
PDBs only protect against voluntary disruptions. Involuntary disruptions (node hardware failures, OOMKills, kernel panics) bypass PDBs — they cannot prevent a Pod from being killed by the OS or lost due to infrastructure failure. For protection against involuntary disruptions, replicas and topology spread constraints are the correct tools.
Example
apiVersion: policy/v1
kind: PodDisruptionBudget
metadata:
name: web-api-pdb
namespace: production
spec:
minAvailable: 2 # Always keep at least 2 pods running
selector:
matchLabels:
app: web-api
---
# Alternative: maxUnavailable style
spec:
maxUnavailable: 1 # Allow at most 1 pod to be unavailable at once
selector:
matchLabels:
app: web-apiCost & Waste Implications
PDBs with overly strict settings (minAvailable equal to replica count, or maxUnavailable: 0) block Cluster Autoscaler and Karpenter from draining underutilized nodes, preventing scale-down and locking in excess node costs. A cluster where CA cannot consolidate nodes due to blocking PDBs can incur 20–40% higher node costs than necessary. PDBs should be set to allow at least one Pod to be evicted.
How KorPro Helps
KorPro identifies PDBs with configurations that block node consolidation and quantifies how much those blocking PDBs cost by preventing Cluster Autoscaler or Karpenter from reclaiming underutilized nodes.
Scan Your Cluster FreeRelated Terms
Cluster Autoscaler
ScalingA component that automatically adds nodes when Pods are unschedulable and removes nodes when they are underutilized.
Read definitionKarpenter
ScalingAn open-source Kubernetes node provisioner that launches the optimal nodes for pending Pods in seconds, without pre-configured node groups.
Read definitionDeployment
WorkloadsA controller that manages a ReplicaSet to keep a specified number of identical Pod replicas running and handles rolling updates.
Read definitionHorizontalPodAutoscaler(HPA)
ScalingA controller that automatically scales the replica count of a Deployment or StatefulSet based on observed metrics.
Read definitionStop Wasting Money on Orphaned Kubernetes Resources
KorPro connects to your clusters across GCP, AWS, and Azure — no agents, no installation — and surfaces every orphaned resource with its monthly cost estimate.