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