Amazon EKS — Understanding EKS Costs

2 minute read

EKS pricing is a combination of the Kubernetes control plane, compute infrastructure, networking, and storage. Many costs are hidden until you get the bill.


Control Plane Cost

Component Cost Notes
EKS cluster (standard support) $0.10/hr ($73/month) Per cluster, non-negotiable
EKS cluster (extended support) $0.60/hr ($438/month) Auto-applies when standard ends
EKS Auto Mode Additional premium Includes compute management

Tip: Consolidate dev/test workloads into fewer clusters to reduce control plane costs.


Compute Costs

EC2 (Managed/Self-Managed Nodes)

Instance vCPU Memory On-Demand/hr Monthly
t3.medium 2 4 GiB $0.0416 ~$30
m6i.large 2 8 GiB $0.096 ~$70
m6i.xlarge 4 16 GiB $0.192 ~$140
m6i.2xlarge 8 32 GiB $0.384 ~$280
c6i.xlarge 4 8 GiB $0.17 ~$124

Fargate

  • Charged per vCPU-hour and per GB-hour
  • vCPU: $0.04048/hr, Memory: $0.004445/hr per GB
  • A 0.5 vCPU / 1 GB pod: ~$0.025/hr (~$18/month)
Workload EC2 (m6i.large) Fargate (0.5vCPU/1GB) Cheaper
1 pod, 24/7 ~$70/month (shared node) ~$18/month Fargate
50 pods, 24/7 ~$70/month (packed) ~$900/month EC2
10 pods, 2hr/day ~$70/month (idle waste) ~$37/month Fargate

Rule of thumb: Fargate is cheaper for spiky/intermittent workloads. EC2 is cheaper at scale.


Networking Costs

Component Cost Optimization
NAT Gateway $0.045/hr + $0.045/GB Use VPC endpoints for S3, ECR, DynamoDB
Cross-AZ data transfer $0.01/GB each way Use topology-aware routing
ALB $0.0225/hr + LCU charges Combine Ingress rules, reduce idle ALBs
NLB $0.0225/hr + NLCU charges Use fewer load balancers
Data transfer to internet $0.09/GB (first 10TB) Use CloudFront for static assets

NAT Gateway Is the #1 Hidden Cost

A typical clutser pulling images, logging, and calling AWS APIs:

50 nodes × 10 pods × 5 MB/min outbound = 250 MB/min
= 15 GB/hr × 24hr × 30 days = 10,800 GB/month
NAT Gateway data: 10,800 × $0.045 = $486/month
NAT Gateway hours: 730 × $0.045 = $33/month
Total: ~$519/month JUST for NAT Gateway

Fix: VPC endpoints for ECR, S3, STS, CloudWatch Logs, EC2.

# Cost of VPC endpoints: $0.01/hr per endpoint per AZ
# 5 endpoints × 3 AZs × 730 hrs = $109.50/month
# Still cheaper than $519/month NAT Gateway data charges

Storage Costs

Type Cost Notes
gp3 (default) $0.08/GB/month 3,000 IOPS free
gp2 $0.10/GB/month Migrate to gp3
io2 $0.125/GB/month + IOPS High-performance
EFS $0.30/GB/month (standard) Expensive at scale
EFS-IA $0.025/GB/month Cheaper for infrequent access

Hidden Costs

Cost Source Monthly Impact
Extended support Clusters on old K8s versions $438/cluster
CloudWatch Logs Control plane logging (5 log types) $50-200+
CloudWatch Container Insights Enhanced observability $100-500+
Unused EBS volumes Orphaned PVCs Varies
Idle load balancers Dev ALBs left running $16+/each
Over-provisioned nodes CPU idle waste 30-60% waste typical

Cost Breakdown Example

A typical production cluster (3 environments):

Component Monthly Cost
EKS control plane (3 clusters) $219
EC2 nodes (15 × m6i.xlarge) $2,100
NAT Gateway (3 AZ) $300
ALB (3 load balancers) $50
EBS storage (500 GB gp3) $40
CloudWatch Logs $100
Data transfer $200
Total ~$3,009/month

After optimization (Spot, right-sizing, VPC endpoints):

Component Monthly Cost
EKS control plane (2 clusters) $146
EC2 nodes (8 × m6i.xlarge Spot) $672
VPC endpoints (replaces NAT) $110
ALB (1 shared) $17
EBS storage (300 GB gp3) $24
Prometheus (self-hosted) $0
Data transfer $100
Total ~$1,069/month (64% savings)

Best Practices

  1. Install cost visibility first — you can’t optimize what you can’t measure
  2. Right-size resource requests — the #1 source of waste
  3. Use Spot instances — 60-90% savings for fault-tolerant workloads
  4. Deploy VPC endpoints — eliminate NAT Gateway data charges
  5. Consolidate clusters — fewer control planes = lower base cost
  6. Avoid extended support — plan upgrades to stay on standard support

Updated: