Home/Library/Amazon EKS Cost Optimization
How-to · Containers · Updated May 2026

Amazon EKS Cost Optimization: Nodes, Fargate, and Spot

An EKS cluster bills for far more than the control plane. The real money is in the compute underneath: oversized nodes, idle headroom held for bursts that never come, and On-Demand capacity where Spot would do. This guide covers Amazon EKS cost optimization end to end, from node group sizing to the Fargate versus EC2 decision.

Amazon EKS cost optimization starts from an uncomfortable fact: Kubernetes makes it easy to waste money quietly. Pods request more CPU and memory than they use, nodes sit half full, and autoscaling is tuned for safety rather than cost. The control plane fee is a rounding error next to the EC2 or Fargate bill it sits on top of. Fix the compute layer in the right order and a 30 to 50 percent reduction on cluster spend is normal, with no hit to reliability.

This article links up to our complete guide to AWS cost optimization, the pillar for this cluster, and sits alongside our deeper guide to Kubernetes cost optimization. EKS spend lives in the Cut step of our See, Cut, Lock, Run method, and the sequencing rule is the one we apply everywhere: rightsize first, choose the cheapest viable capacity model second, commit last.

Where the EKS bill actually comes from

The control plane is a flat hourly fee per cluster. The variable cost, the part worth optimizing, is the worker capacity: EC2 node groups, Fargate pods, plus EBS volumes, load balancers and data transfer. Optimize the capacity layer and the cluster cost falls with it.

Step 1: Right-size requests before you touch nodes

Node cost is downstream of pod requests. If every deployment requests twice the CPU and memory it actually uses, the cluster autoscaler dutifully provisions twice the nodes, and you pay for the gap. Start by reading real usage with the Kubernetes metrics server, Vertical Pod Autoscaler in recommendation mode, or a tool like Goldilocks, and bring requests in line with the p95 of actual consumption plus sensible headroom. We walk through this in rightsizing Kubernetes requests and limits. This single step often removes whole nodes from the cluster before any infrastructure change.

Step 2: Right-size and consolidate the node groups

With requests honest, look at bin packing. Many clusters run a single large node group of general-purpose instances and leave half the capacity stranded by scheduling fragmentation. Match instance families to the workload shape: compute-bound services want compute-optimized instances, memory-heavy pods want memory-optimized, and Graviton-based instances (the m7g, c7g and r7g families) typically deliver better price-performance for container workloads that have ARM-compatible images. A consolidating autoscaler such as Karpenter improves on the classic Cluster Autoscaler by provisioning the cheapest instance that fits pending pods and actively consolidating underused nodes, which directly cuts the idle headroom you pay for.

Step 3: Run Spot where the workload tolerates interruption

Spot capacity is the largest single lever on most clusters, and Kubernetes is unusually well suited to it because the scheduler already expects nodes to come and go. Stateless services, batch jobs, CI runners and anything that can drain and reschedule are strong Spot candidates and can run at a steep discount to On-Demand. Keep a baseline of On-Demand or committed capacity for stateful and latency-critical pods, and use diversification across instance types and Availability Zones plus node termination handling so interruptions are graceful. The risk framing is the same one we lay out in Spot Instances: when 90 percent off is worth the risk.

Want your EKS clusters optimized without risking uptime?

Our AWS cost audit reads pod-level utilization, sizes node groups, designs the Spot and On-Demand split, and models the saving before any change reaches production. On the performance model, you pay only from realized savings. No savings, no fee.

Book an AWS cost audit →

Step 4: Decide Fargate versus EC2 deliberately

AWS Fargate removes node management: you pay per pod for the vCPU and memory it requests, with no nodes to bin pack. That convenience is worth real money when utilization is low or spiky, because you stop paying for idle node headroom. EC2 node groups are usually cheaper at steady, high utilization where good bin packing keeps nodes full, and they can use Spot and Reserved capacity that Fargate cannot. A common pattern is to run the steady core on EC2 with Spot and commitments, and push bursty or low-volume workloads to Fargate so they cost nothing when idle.

SituationBest fit
Steady, high-utilization servicesEC2 node groups, rightsized, with Spot plus commitments
Spiky, bursty or low-volume workloadsFargate, so idle costs nothing
Stateless services and batch jobsEC2 Spot with diversification
Stateful, latency-critical podsOn-Demand or committed baseline
ARM-compatible imagesGraviton instances (m7g / c7g / r7g)

Step 5: Commit the steady baseline, then lock it

Once the cluster is rightsized and the Spot split is set, the predictable On-Demand floor is a commitment candidate. Compute Savings Plans cover EC2 capacity under EKS and flex across instance family and Region, which suits an autoscaling cluster better than instance-specific Reserved Instances. Buy only on the clean baseline, and review coverage as the cluster grows. The buying logic is the same as in Savings Plans versus Reserved Instances. Then add budgets and anomaly alerts so a runaway autoscaling event or a misconfigured request does not quietly re-inflate the bill.

EKS features, instance families and Fargate behavior above reflect AWS offerings as of May 2026. Verify current options and pricing in the AWS console before changing production clusters, as families and rates change.

Go deeper · free field guide

The AWS Cost Optimization Field Guide includes the node-group sizing worksheet and the Spot diversification checklist we use on EKS engagements. It is the downloadable companion to this guide.

The short version

For Amazon EKS cost optimization, fix pod requests first so the cluster stops over-provisioning, consolidate node groups with Karpenter and the right instance families, run Spot for interruption-tolerant workloads, choose Fargate where utilization is low and EC2 where it is steady, then commit the baseline and lock it with budgets. When you want EKS spend cut across the estate without risking uptime, that is what our AWS cost optimization service delivers.

The Cloud Cost Brief

Cloud pricing moves. We tell you when it matters.

New commitment instruments, FOCUS changes, hyperscaler pricing shifts, and the plays that actually move a bill. No schedule, no filler.

Subscribe · Work email only