Updated 26 October 2026 · Published by Zoorik
A pod disruption budget in Kubernetes, or PDB, limits how many of an app’s pods can be down at once during voluntary disruptions. PDBs have been stable since Kubernetes v1.21.
Draining a node to evict its pods is a voluntary disruption. A hardware failure is involuntary, so a PDB can’t stop it. A PDB also doesn’t limit deleting a pod directly or a rolling update.
The purpose of pod disruption budgets in Kubernetes
A PDB in Kubernetes helps keep enough of your app running during a drain. You set one of two fields, as a number or percentage:
minAvailable: pods that must stay up.maxUnavailable: pods that may be down.
A budget that blocks a drain
The docs’ example sets minAvailable: 2 for 3 pods, which allows 1 disruption. After one eviction, the next waits until a replacement pod is Ready.
Set maxUnavailable: 0 instead, and zero voluntary evictions are allowed. Draining a node that runs any of the 3 never completes.
Why it matters for your cloud cost
- The Cluster Autoscaler, which adds and removes nodes, checks PDBs before removing one. If any eviction fails, it keeps the node.
- So
maxUnavailable: 0orminAvailable: 100%blockskubectl drainand the Cluster Autoscaler from evicting its pods. You keep paying for the node. - Coral evicts pods only within each pod’s PDB. A rebalance never goes past a PDB, and a node it can’t empty within 45 minutes is kept.
Set a budget that lets a drain finish. The free assessment works out your own figure.
Read next: Pod disruption budget best practices for AKS and EKS
Sources: Kubernetes, “Disruptions” (opens in a new tab); Kubernetes, “Specifying a Disruption Budget for your Application” (opens in a new tab); Kubernetes Autoscaler, “Cluster Autoscaler FAQ” (opens in a new tab); Kubernetes, “Horizontal Pod Autoscaling” (opens in a new tab).