Troubleshooting·Certified Kubernetes Administrator
PodDisruptionBudgets and Node Drain
ALLOWED DISRUPTIONS 0 and a drain that retries every five seconds forever: Cannot evict pod as it would violate the pod's disruption budget. minAvailable 3 with 3 replicas permits nothing, and the arithmetic is the whole guide.
Scheduling and Placement Guide 45 of 103 Advanced
- Kubernetes1.36.4
- Cluster4 nodes
- Runtimecontainerd 2.2.6
- CNICalico v3.32.1
- TimeAbout 15 min
| Server Name | IP Address | OS | Roles | CPU | RAM | HDD |
|---|---|---|---|---|---|---|
| CKA1001 | 192.168.0.175 | Ubuntu 26.04 LTS | Control Plane Node | 2 Core | 4 GB | 50 GB |
| CKA1001-NODE01 | 192.168.0.176 | Ubuntu 26.04 LTS | Worker Node (the one being drained) | 2 Core | 4 GB | 50 GB |
| CKA1001-NODE02 | 192.168.0.177 | Ubuntu 26.04 LTS | Worker Node | 2 Core | 4 GB | 50 GB |
| CKA1001-NODE03 | 192.168.0.178 | Ubuntu 26.04 LTS | Worker Node | 2 Core | 4 GB | 50 GB |
This guide includes
Use this when a drain hangs forever repeating Cannot evict pod. This matters because the PodDisruptionBudget is doing exactly its job - protecting availability - so the fix is a deliberate decision about acceptable disruption rather than a --force.
- spreading three replicas one per node before anything is disrupted
- writing a PodDisruptionBudget that permits nothing, and reading
ALLOWED DISRUPTIONS 0 - watching a drain retry every five seconds and never finish
- loosening
minAvailableby one and letting the drain complete
Before you start
- guide 44 - this is the fourth reason a drain refuses, and the only one that does not name a flag.
-
Three replicas, one per node
-
A budget that permits nothing
-
The drain that cannot finish
-
Loosen it by one