Ask teams how they're reducing Kubernetes costs and you hear: Spot Instances, autoscaling, Reserved Instances, Graviton.
All worthwhile.
But here's what I've found actually works:
Stop paying for resources workloads never use.
The Real Problem
Most clusters are carrying years of operational assumptions.
"Add some buffer." "Double the memory just in case." "Optimize later."
Months later, those assumptions become production reality.
And production reality becomes a monthly invoice.
What Actually Happens
Compare what pods request versus what they use:
- Services requesting 2 CPU consuming 200m
- Apps requesting 4 GB RAM consuming 800 MB
- Workloads requesting 8 GB using less than 1.5 GB
Kubernetes reserves node capacity for resources that are never used. Extra nodes get provisioned. Not because applications need them. Because requests claim they do.
One team reduced their monthly bill by $40,000 just by bringing pod requests in line with actual usage.
No new technology. No architecture changes. Just honesty.
The Other Hidden Savings
Every cluster has workloads nobody needs. Pods that haven't processed meaningful traffic in months. Legacy integrations kept alive "just in case."
Reporting jobs that run 24/7 but only need 8 hours. Data processing jobs running overnight despite having no users.
Scheduling workloads to match actual demand? Teams save 30-40% on cluster costs.
What Doesn't Help
Autoscaling doesn't fix bad sizing. If pods start oversized, autoscaling just scales the oversized pods. Costs scale with the oversized assumptions.
Resource limits set during panic rarely get revisited. The emergency passes. The oversized limits stay. Years later, you're still paying for a worst-case scenario.
What Actually Works
Use Grafana, Prometheus, Metrics Server, Kubecost.
Compare requests versus usage. Check pod activity patterns. Review scaling behavior. Look at which services consume capacity but deliver little value.
The data usually tells a very different story than assumptions.
The Simple Question
If every workload had to justify its resource requests today, how many would survive unchanged?
That's usually where the real savings begin.
Top comments (0)