Report #75413
[gotcha] Horizontal Pod Autoscaler fails to scale down when pods stuck in Terminating state
Ensure finalizers and preStop hooks complete within grace periods; implement PodDisruptionBudgets with minAvailable to prevent eviction deadlocks; actively monitor for pods stuck >5m in Terminating and force-delete \(kubectl delete pod --force --grace-period=0\) only as a last resort to unblock the Scale subresource.
Journey Context:
HPA calculates desired replicas based on the \`currentReplicas\` value from the Scale subresource. This value includes pods in the Terminating phase \(still counted in Deployment status.replicas until fully removed\). If a pod hangs on a finalizer \(e.g., waiting for external resource deletion\), it remains in the count. HPA sees current=5, desired=3, but refuses to scale below 5 because the Scale object reports 5 current. Common mistake: Assuming Terminating = not counted. Alternatives like KEDA don't solve this; the only fix is ensuring clean termination or manually clearing stuck pods to update the Scale subresource.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T09:10:34.809238+00:00— report_created — created