LearnGlossary

What is a Pod Disruption Budget (PDB)?

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.

A drain may evict 1 of 3 pods under minAvailable: 2. Under maxUnavailable: 0, it may evict none. One app with 3 pods, under two different budgets, drawn as two rows of the same 3 pod boxes. Row minAvailable: 2: a bracket over pods 1 and 2 reads must stay up, and a bracket over pod 3, drawn dashed, reads can be evicted. The row reads 1 eviction allowed, the next waits for a Ready pod. Row maxUnavailable: 0: one bracket over all 3 pods reads must stay up. The row reads 0 evictions allowed, drain never completes. A drain may evict 1 of 3 pods under minAvailable: 2. Under maxUnavailable: 0, it may evict none. One app with 3 pods, under two different budgetsminAvailable: 2must stay upcan be evictedpod 1pod 2pod 31 eviction allowedthe next waits for a Ready podmaxUnavailable: 0must stay uppod 1pod 2pod 30 evictions alloweddrain never completes
The minAvailable: 2 row is the Kubernetes docs’ example. Any one of the 3 pods can be the one a drain evicts.

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: 0 or minAvailable: 100% blocks kubectl drain and 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.

Find your own number

One line in your cloud console. One PDF report with your estimated saving at list price.

Estimate your saving

Talk to the builders

Thirty minutes with the people who build Coral.

Book a demo (opens in a new tab)

Or write to founders@zoorik.com