Kubernetes clusters routinely waste 40-70% of provisioned resources. Here is the complete playbook for cutting cloud spend without touching your SLOs.
Scale-down is blocked by pods with local storage, pods missing PodDisruptionBudgets, pods belonging to DaemonSets, or pods with the cluster-autoscaler.kubernetes.io/safe-to-evict: false annotation. Audit blocking pods per node using kubectl describe node and check the CA logs for 'not removable' reasons before tuning scale-down thresholds.
VPA in Auto mode and HPA scaling on CPU/memory create a feedback loop — VPA adjusts resource requests which changes the HPA's utilization denominator, triggering erratic HPA scaling. The supported pattern is to use VPA in Off or Initial mode to set correct baseline requests, and HPA to handle replica scaling using custom metrics like request rate rather than CPU percentage.
Discussion0