Quick Takeaways
What you'll learn in this article
- 1
Kubernetes cost optimization has matured from spreadsheets to specialized tools
- 2
This guide covers cluster over-provisioning data from CAST AI and CNCF, FinOps with Kubecost and OpenCost, VPA in-place resize in K8s 1
- 3
35, Karpenter vs Cluster Autoscaler, Spot strategies delivering 59-77% savings, and hidden network and storage costs inflating cloud bills
Keep reading for detailed implementation, code examples, and real-world results
Updated (February 2026): Complete rewrite replacing generic overview with current cost optimization tooling landscape, real over-provisioning data from CAST AI and CNCF surveys, VPA in-place resize GA in Kubernetes 1.35, Karpenter adoption patterns, Spot instance strategies with real savings data, and practical guidance on the hidden costs that silently inflate cloud bills.
The Over-Provisioning Problem Is Worse Than You Think
Every engineering team believes they have their Kubernetes costs under control. The data says otherwise.
CAST AI analyzed over 4,000 production clusters in their 2025 Kubernetes Cost Benchmark report and found that 99.94 percent of clusters are over-provisioned. Average CPU utilization sits at just 13 percent. Average memory utilization is 20 percent. The median organization wastes between 50 and 70 percent of its Kubernetes compute spend on resources that are allocated but never used.
The CNCF's annual survey confirms this pattern from a different angle: cost management has been the top Kubernetes challenge for three consecutive years, with 49 percent of organizations citing it as their primary operational concern.
This waste exists because Kubernetes makes it trivially easy to request resources and surprisingly hard to right-size them. Developers set CPU and memory requests during initial deployment, those numbers never get revisited, and the cluster autoscaler dutifully provisions nodes to satisfy requests that vastly exceed actual usage.
Clusters Over-Provisioned
99.94%
Of Kubernetes clusters are over-provisioned according to CAST AI's analysis of 4,000+ production clusters (2025)
The Cost Visibility Toolchain
You cannot optimize what you cannot measure. The Kubernetes cost observability space has consolidated around a few dominant tools, each serving different organizational profiles.
Kubecost and the IBM Acquisition
Kubecost was the category leader in Kubernetes cost management, providing real-time cost allocation, right-sizing recommendations, and multi-cluster cost aggregation. In September 2024, IBM acquired Kubecost and integrated it into the IBM Turbonomic platform as part of their FinOps portfolio.
The free tier still exists and handles single-cluster cost allocation well. The enterprise tier (now IBM Turbonomic with Kubecost) adds multi-cluster aggregation, cloud cost integration, custom pricing models, and automated savings actions. If your organization already runs IBM observability tools, the integration is seamless. If not, the acquisition introduces vendor considerations that did not exist when Kubecost was independent.
OpenCost
OpenCost is the CNCF sandbox project that provides vendor-neutral Kubernetes cost monitoring. It measures and allocates infrastructure and container costs in real-time, supporting on-demand pricing, Spot pricing, reserved instance pricing, and custom pricing models across AWS, Azure, GCP, and on-premises environments.
OpenCost's strength is its neutrality and extensibility. It exposes a standard API that tools like Grafana, Datadog, and custom dashboards can consume. The tradeoff is that OpenCost provides the data layer, not the recommendation engine โ you need to build or buy the optimization logic separately.
CAST AI
CAST AI takes a different approach by combining visibility with automated action. Their platform analyzes workloads across AWS, Azure, and GCP, then automatically right-sizes pods, selects optimal instance types, and manages Spot instance lifecycle โ all without human intervention.
The automation-first approach delivers faster results but requires trust in the platform's decision-making. CAST AI reports that customers achieve an average of 62 percent cloud cost reduction, primarily through automated right-sizing and intelligent Spot management. The platform works across all three major cloud providers, which matters for multi-cloud organizations.
Cost Visibility Tool Selection
OpenCost / Kubecost
CAST AI
Right-Sizing: VPA in-Place Resize Changes Everything
Right-sizing โ adjusting CPU and memory requests to match actual usage โ is the single highest-impact cost optimization strategy. The challenge has always been that changing resource requests required pod restarts, which disrupted running workloads.
In-Place Pod Resize in Kubernetes 1.35
Kubernetes 1.33 promoted in-place pod vertical scaling to beta, and it reached GA stability in Kubernetes 1.35. This feature allows changing a pod's CPU and memory resources without restarting it. The Vertical Pod Autoscaler (VPA) can now adjust resource allocations in real-time based on actual usage patterns without causing downtime.
This is a fundamental shift in how right-sizing works. Previously, VPA recommendations were applied during pod restarts โ which meant either accepting disruption or accumulating waste between deployment cycles. With in-place resize, VPA continuously tunes resources to match actual demand, closing the gap between allocated and used resources in real-time.
Practical Right-Sizing Workflow
The effective workflow combines monitoring data with progressive adjustment:
Phase 1 โ Observe. Deploy Kubecost, OpenCost, or CAST AI and collect at least two weeks of resource utilization data. Look for pods where requests exceed the 95th percentile of actual usage by more than 30 percent.
Phase 2 โ Set guardrails. Establish minimum resource floors to prevent right-sizing from causing OOM kills or CPU throttling. A common starting point: set requests to the 95th percentile of observed usage plus a 20 percent buffer for CPU and 25 percent for memory.
Phase 3 โ Automate gradually. Start VPA in "recommend" mode to validate suggestions against your workload patterns. Move to "auto" mode for stateless workloads first, then extend to stateful workloads once confidence is established.
Phase 4 โ Iterate. Resource patterns change with traffic patterns, feature releases, and data growth. Review right-sizing recommendations monthly and after any significant workload changes.
Typical Cost Savings by Optimization Strategy (%)
| strategy | savings |
|---|---|
| Right-sizing (VPA) | 40 |
| Spot instances | 65 |
| Karpenter bin-packing | 25 |
| Idle resource cleanup | 20 |
| Reserved instances | 35 |
| Network optimization | 15 |
Karpenter vs Cluster Autoscaler
Node-level autoscaling determines how efficiently your cluster provisions and decommissions compute capacity. The industry is in the middle of a significant shift from the Kubernetes Cluster Autoscaler to Karpenter.
Cluster Autoscaler
The Cluster Autoscaler has been the default node scaling solution since early Kubernetes. It works by monitoring pending pods that cannot be scheduled due to insufficient resources, then scaling up node groups. When nodes are under-utilized, it cordons and drains them.
The Cluster Autoscaler's primary limitation is that it operates on pre-defined node groups with fixed instance types. Scaling decisions are constrained to "add another node of type X" or "remove a node of type X." This forces engineering teams to pre-select instance types and manage multiple node groups to cover different workload profiles.
Karpenter
Karpenter, originally built by AWS and now a CNCF sandbox project, takes a fundamentally different approach. Instead of scaling pre-defined node groups, Karpenter evaluates pending pod requirements in real-time and provisions the optimal instance type from the full catalog of available instances.
When a pod needs 4 vCPUs and 16 GB of memory, Karpenter does not add an 8-vCPU node from a pre-configured node group โ it provisions exactly the right instance type for the workload. This just-in-time, workload-aware provisioning eliminates the instance type pre-selection problem and dramatically improves bin-packing efficiency.
Karpenter also handles node consolidation more aggressively. It continuously evaluates whether running workloads could be packed onto fewer or cheaper nodes, then performs rolling replacements to optimize cost. The consolidation logic considers Spot pricing, instance family availability, and workload disruption budgets.
Karpenter reached v1.0 GA on AWS in late 2024 and Azure support is in active development. The migration path from Cluster Autoscaler is well-documented but non-trivial โ it requires rethinking node group strategies and defining NodePool and NodeClass resources that replace the old node group model.
Node Autoscaling Selection
Cluster Autoscaler
Karpenter
Spot Instance Strategies
Spot instances (AWS), Spot VMs (Azure), and Preemptible VMs (GCP) offer 59 to 77 percent discounts over on-demand pricing. Using them effectively in Kubernetes requires handling the fundamental tradeoff: significant cost savings in exchange for the possibility of instance termination with as little as two minutes notice.
What Runs Well on Spot
Stateless web servers and API backends are ideal Spot workloads โ they scale horizontally, tolerate individual instance loss, and restart quickly. Batch processing, CI/CD runners, data pipelines, and dev/staging environments also work well because interruptions cause delays, not data loss.
Machine learning training with checkpointing is increasingly viable on Spot. Frameworks like PyTorch and TensorFlow support periodic checkpoint saves, so a Spot interruption loses at most one checkpoint interval of work.
What Should Not Run on Spot
Databases, message brokers, distributed consensus systems (etcd, ZooKeeper), and any stateful workload where interruption causes data loss or extended recovery should stay on on-demand or reserved instances.
Multi-Instance Diversification
The key to Spot reliability is instance type diversification. Running Spot workloads across multiple instance families (m5, m6i, m6g, c5, c6i, r5) and multiple availability zones dramatically reduces the probability of simultaneous interruptions. Karpenter handles this automatically by selecting from the broadest possible instance pool.
A practical Spot strategy for production: run 70-80 percent of stateless workloads on Spot with a 20-30 percent on-demand baseline. This provides sustained cost savings while maintaining capacity during Spot market disruptions. Pod Disruption Budgets ensure that Spot reclamation never takes more than a configured percentage of replicas offline simultaneously.
Recommended Compute Mix for Cost-Optimized Production Clusters
| Name | Value |
|---|---|
| Spot instances | 45 |
| On-demand instances | 25 |
| Reserved / Savings Plans | 20 |
| Committed use discounts | 10 |
Event-Driven Autoscaling with KEDA
The Horizontal Pod Autoscaler (HPA) scales based on CPU and memory utilization, but many workloads scale better on external signals โ queue depth, request rate, database connection count, or custom metrics.
KEDA (Kubernetes Event-Driven Autoscaling) is a CNCF graduated project that extends HPA with 60+ event source scalers. It can scale deployments based on Kafka consumer lag, SQS queue depth, Prometheus metrics, cron schedules, and dozens of other signals.
The cost impact is significant: KEDA enables scale-to-zero for workloads that do not need continuous capacity. A batch processor that runs for 4 hours per day costs 83 percent less when KEDA scales it to zero replicas during idle periods versus running minimum replicas around the clock.
KEDA's HTTP add-on brings scale-to-zero to HTTP workloads, which was previously impractical because scaling from zero introduces cold start latency. The add-on maintains a lightweight proxy that buffers initial requests while pods scale up, making scale-to-zero viable for internal APIs and asynchronous endpoints where sub-second response times are not required.
The Hidden Costs: Network and Storage
Compute costs get the most attention because they are the largest line item, but network and storage costs silently inflate cloud bills โ often by 20 to 40 percent beyond what teams expect.
Network Cost Traps
NAT Gateway charges are the most common surprise on AWS Kubernetes bills. Every pod on a private subnet that communicates with the internet or AWS services routes through a NAT Gateway at $0.045 per hour plus $0.045 per GB of processed data. A cluster pushing 10 TB per month through NAT Gateways pays $450 in data processing alone โ before considering the hourly charges.
The fix: use VPC endpoints for AWS service traffic (S3, DynamoDB, ECR, STS). VPC Gateway endpoints for S3 and DynamoDB are free. Interface endpoints cost $0.01 per hour plus $0.01 per GB, which is significantly cheaper than NAT Gateway pricing for high-volume service-to-service traffic.
Cross-AZ traffic costs $0.01 per GB in each direction on AWS. Kubernetes spreads pods across availability zones for resilience, which means service-to- service communication frequently crosses AZ boundaries. A service mesh like Istio with locality-aware routing or Kubernetes topology-aware hints can preference same-AZ communication, reducing cross-AZ data transfer charges.
Load balancer proliferation is another common trap. Each Kubernetes Service of type LoadBalancer provisions a cloud load balancer at $18-25 per month on AWS. Organizations running 50 services with individual load balancers pay $900-1,250 per month just for load balancer hours. Consolidating behind an ingress controller (NGINX, Traefik, or AWS Load Balancer Controller with IngressGroup) collapses this to one or two load balancers.
Storage Cost Optimization
PersistentVolume reclamation is frequently overlooked. When pods are deleted, their PersistentVolumeClaims may be released but the underlying volumes persist (depending on reclaim policy). Organizations accumulate orphaned EBS volumes, Azure Disks, and Persistent Disks that cost money without serving any workload. Regular audits and automated cleanup policies prevent this accumulation.
Storage class selection matters more than most teams realize. GP3 volumes on AWS cost $0.08 per GB-month versus $0.10 for GP2 โ a 20 percent savings with better baseline performance. For read-heavy workloads, EFS (Elastic File System) or FSx for Lustre may be more cost-effective than provisioning large EBS volumes for IOPS.
Ephemeral storage for container images, logs, and temporary files runs on the node's local disk. Large container images eat into available ephemeral storage, potentially requiring larger (more expensive) instance types. Optimizing container image sizes โ using multi-stage builds, minimal base images, and avoiding unnecessary dependencies โ reduces both pull times and ephemeral storage pressure.
Where Kubernetes Cost Waste Hides (%)
| cost | percent |
|---|---|
| Compute (over-provisioned) | 45 |
| Network (NAT, cross-AZ, LBs) | 20 |
| Storage (orphaned, wrong class) | 15 |
| Idle dev/staging environments | 12 |
| Logging and monitoring | 8 |
FinOps Integration
FinOps โ the practice of bringing financial accountability to cloud spending โ has become the organizational framework for Kubernetes cost optimization. The FinOps Foundation reports that 80 percent of organizations now have some form of FinOps practice, up from 45 percent in 2023.
Showback and Chargeback
The foundation of FinOps in Kubernetes is accurate cost allocation. Kubecost and OpenCost provide namespace-level and label-level cost breakdowns that map Kubernetes spending to teams, services, and business units.
Showback makes costs visible without charging teams directly. Engineering teams see their cloud costs alongside their metrics dashboards, creating awareness that drives organic optimization. Most organizations start here.
Chargeback actually bills internal teams for their cloud consumption. This creates stronger incentives but requires more accurate cost allocation and organizational buy-in. Chargeback works best when teams have the authority and tooling to act on their cost data.
Cost Budgets and Alerts
Setting cost budgets per namespace or per team creates accountability without requiring constant manual monitoring. Kubecost and cloud-native tools (AWS Budgets, Azure Cost Management) support alerts when spending exceeds thresholds โ typically at 80 percent, 100 percent, and 120 percent of budget.
The most effective FinOps teams treat cost anomalies like production incidents. A sudden 40 percent spike in a namespace's compute costs triggers investigation with the same urgency as a latency spike. The root causes are often the same: a misconfigured deployment, a runaway process, or an autoscaling policy that responds to a false signal.
Putting It Together: A Cost Optimization Roadmap
Not all optimizations are equal. Prioritize by impact and implementation complexity:
Week 1-2: Visibility. Deploy OpenCost or Kubecost. Establish cost baselines per namespace and per team. Identify the top 10 most expensive workloads.
Week 3-4: Quick wins. Clean up idle resources โ orphaned volumes, stopped but allocated load balancers, oversized dev/staging clusters. Set up VPC endpoints for S3 and DynamoDB. These changes are low-risk and often save 10-20 percent immediately.
Month 2: Right-sizing. Enable VPA in recommend mode. Review recommendations against workload patterns. Apply right-sizing to the top 10 over-provisioned workloads. Expect 20-40 percent compute savings on affected workloads.
Month 3: Spot and autoscaling. Introduce Spot instances for stateless workloads with proper diversification and Pod Disruption Budgets. Evaluate Karpenter for AWS clusters. Deploy KEDA for event-driven workloads with idle periods.
Month 4+: Optimization culture. Establish FinOps practices with showback dashboards. Set namespace cost budgets. Include cost metrics in deployment reviews. Make cost a first-class engineering metric alongside latency, availability, and throughput.
Manual Cost Tracking
Kubernetes cost management relies on cloud billing dashboards and spreadsheets. Teams manually estimate resource needs. Over-provisioning is the norm because right-sizing tools are immature.
Cost Visibility Emerges
Kubecost reaches widespread adoption. OpenCost enters CNCF. FinOps Foundation grows from niche to mainstream. Organizations begin measuring Kubernetes costs accurately for the first time.
Automation and Consolidation
Karpenter reaches GA on AWS. IBM acquires Kubecost. CAST AI demonstrates automated optimization at scale. VPA in-place resize reaches beta. KEDA graduates from CNCF. Spot strategies mature.
Intelligent Optimization
VPA in-place resize GA enables real-time right-sizing. Karpenter expands beyond AWS. AI-driven cost optimization predicts spending patterns. Cost becomes a standard engineering metric alongside performance.
Key Principles
The organizations that control Kubernetes costs share common practices:
Measure before optimizing. Every optimization starts with accurate cost data. Deploy cost visibility tooling before making changes so you can quantify impact and avoid optimizing the wrong things.
Automate right-sizing. Manual resource tuning does not scale. VPA with in-place resize, Karpenter's workload-aware provisioning, and KEDA's event- driven scaling remove human bottlenecks from resource optimization.
Diversify compute purchasing. No single pricing model is optimal for all workloads. The right mix of Spot, on-demand, and reserved instances depends on workload characteristics โ not organizational defaults.
Watch the hidden costs. Network egress, NAT Gateway charges, cross-AZ traffic, and storage sprawl collectively represent 20-40 percent of waste in most Kubernetes deployments. These costs are invisible until you look for them.
Make cost a team responsibility. FinOps succeeds when engineering teams own their cost metrics. Showback dashboards, namespace budgets, and cost anomaly alerts create the feedback loops that drive sustained optimization.
For teams running GPU workloads alongside their cost optimization efforts, see our guide on Kubernetes GPU node pools for AI workload optimization.

