Free tools Windows power users keep installed
One-click scans. No signup required.
A Kubernetes node drain can wait on a pod when removing it would violate a PodDisruptionBudget (PDB), but that is only one possible cause—not a confirmed explanation for this two-day delay. Check the pod, its owner and readiness, and the matching PDB before changing anything; long shutdown periods, rescheduling constraints, storage handling, and managed-provider upgrade policies can also extend maintenance.
Why one pod can block a node drain
During maintenance, kubectl drain uses the Eviction API to remove eligible pods while allowing workloads to shut down gracefully. An eviction is blocked when it would reduce the number of healthy pods below the matching PDB’s permitted level. If the budget allows zero voluntary disruptions, a selected pod on the node can prevent the drain from completing. Kubernetes’ node-drain guide and PDB documentation explain these mechanics.
As an Amazon Associate I earn from qualifying purchases.
The title does not identify the cluster provider or include logs and configuration, so it cannot establish that a PDB caused this particular delay. Treat PDB denial as a strong hypothesis to verify, not a postmortem finding.
How to diagnose the blocked pod
- Identify the pod and its workload. Record its namespace, owner, and readiness, then determine whether the owner can create a replacement pod. A replacement that cannot become Ready will not necessarily restore disruption headroom.
- Find the matching PDB and inspect its status. Run
kubectl get pdb --all-namespacesto list budgets, then inspect the relevant one withkubectl get poddisruptionbudgets <name> -n <namespace> -o yaml. CheckdisruptionsAllowed,currentHealthy, anddesiredHealthy. A value of zero fordisruptionsAllowedmeans no voluntary disruption is currently permitted. See the Kubernetes PDB guide. - Check the eviction result. An HTTP 429 response can indicate that an eviction would violate a PDB, but it can also reflect API rate limiting. Use the response details and relevant events or provider logs to distinguish the causes. Kubernetes’ Eviction API documentation describes both possibilities.
- Check what happens after eviction. Look for a long
terminationGracePeriodSeconds, scheduling constraints such as restrictive node affinity, insufficient available capacity, or persistent-volume handling that could slow shutdown or rescheduling. Google Cloud’s GKE upgrade troubleshooting guide documents these as possible upgrade delays.
Choose a remedy that preserves workload safety
Do not change a budget or force-remove a pod until you understand the application’s availability requirements. A PDB governs voluntary disruptions; it does not protect a workload from every cause of unavailability. For replicated services, establish how many healthy replicas must remain. For quorum-based stateful systems, calculate the safe replica floor before changing scale or budget settings.
#1 Best Overall
| Option | When it may help | Trade-off or caution |
|---|---|---|
| Add or scale workload replicas | When the application can safely run additional replicas and new replicas can become Ready, extra healthy capacity may permit eviction while respecting the PDB. Google Cloud recommends scaling a Deployment or HPA in relevant GKE cases; see its cluster upgrade guidance. | Scaling does not help if replicas cannot schedule or become healthy. Confirm capacity and, for stateful workloads, quorum requirements. |
| Correct an over-restrictive PDB | When the configured budget is stricter than the service’s real availability requirement. Kubernetes documents that minAvailable equal to the replica count, or maxUnavailable: 0, permits zero voluntary evictions. |
Relaxing the budget can allow more simultaneous disruption. Set it according to the workload’s actual failure tolerance, not merely to make an upgrade proceed. |
Use unhealthyPodEvictionPolicy: AlwaysAllow |
When running but unhealthy pods are preventing maintenance and the policy is appropriate for the workload. Kubernetes documents this policy as stable starting with Kubernetes 1.31. | An unhealthy pod may be evicted before it gets another chance to recover. Check the cluster version and application impact before applying it. |
| Pause automated maintenance and investigate | When the eviction is stuck and the cause or service impact is not clear. | Kubernetes advises pausing the automated operation and investigating. Direct pod deletion is a possible later step, but deletion is not the same as a PDB-respecting eviction; assess application safety before considering it. See the Eviction API guidance. |
Separate Kubernetes behavior from provider timing
Kubernetes defines how eviction and PDB checks work, but a managed service controls additional upgrade behavior and timing. Do not assume that a GKE-specific window or policy applies to an unidentified cluster. For example, Microsoft’s AKS troubleshooting guide describes PDB-related UpgradeFailed errors and points to an upgrade readiness check. Consult the provider’s guidance and upgrade events for the cluster in question.
For GKE specifically, the troubleshooting guide gives the audit-log message “Cannot evict pod as it would violate the pod’s disruption budget” as an example of PDB denial. It also documents certain GKE short-lived upgrade cases that can take up to seven days, and GKE Autopilot extended-duration pods that may be protected from GKE-initiated eviction for up to seven days. Those are GKE-specific behaviors, not general Kubernetes drain limits or evidence about this incident. The guide also identifies long termination periods, restrictive node affinity, and persistent-volume lifecycle handling as potential contributors to delays.
Quick Recap
Best Value
Rank #3
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

