Report #85637
[gotcha] Kubernetes HPA ignores CPU of pods newer than initialization period
Lower \`--horizontal-pod-autoscaler-cpu-initialization-period\` in kube-controller-manager \(default 5m\) to match your app's startup time, or switch to custom metrics \(e.g., requests-per-second\) that are not subject to the initialization delay. Alternatively, use KEDA for event-driven scaling.
Journey Context:
The Horizontal Pod Autoscaler \(HPA\) algorithm deliberately ignores CPU metrics from pods that are newer than the \`--horizontal-pod-autoscaler-cpu-initialization-period\` \(default 5 minutes\) to avoid reacting to CPU spikes during application startup \(e.g., JVM warm-up\). This creates a dangerous blind spot: during a scale-up event, new pods report 0% CPU to HPA, so the calculated average CPU across the deployment remains high. This can trigger unnecessary additional scale-ups \(thrashing\) or prevent scale-downs. Developers often misattribute this to HPA 'lag' or Kubernetes being 'slow'. The 5-minute default is optimized for heavy Java apps, but hurts lightweight Go/Node apps that start in seconds. Reducing the window risks instability during legitimate startup spikes, so the fix requires aligning the HPA parameter with actual application startup profiles.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T02:19:53.999717+00:00— report_created — created