EKS Pricing

You pay a flat hourly fee per cluster plus the cost of the compute and AWS resources you run.

EKS billing has a few independent parts. Understanding them avoids surprises.

What you pay for

  • Control plane — a flat hourly charge per cluster (about $0.10/hour, ~$73/month) regardless of size.
  • Compute — the EC2 instances behind your node groups, or the vCPU/memory that Fargate pods consume.
  • Networking & storage — load balancers, NAT gateways, EBS/EFS volumes, and data transfer, billed as normal AWS resources.

Ways to save

  • Use Spot Instances for fault-tolerant workloads.
  • Right-size nodes and use an autoscaler so you don't pay for idle capacity.
  • Consolidate low-traffic apps onto fewer clusters — each cluster carries its own control-plane fee.

Example

Example · bash
# Rough monthly control-plane cost estimate for one cluster
# $0.10/hour x 24 hours x 30 days = ~$72/month per cluster

# Node costs come from EC2 — inspect instance types in a node group
aws eks describe-nodegroup --cluster-name demo \
  --nodegroup-name ng-1 --query 'nodegroup.instanceTypes'

When to use it

  • A cost-conscious team runs dev clusters only during business hours with a scheduled eksctl delete, cutting the per-hour cluster fee by 65%.
  • A platform team consolidates five small microservices clusters into one to halve cluster fees while isolating workloads with namespaces and RBAC.
  • A startup compares EKS Fargate per-vCPU pricing against EC2 Spot node groups to determine the cheaper model for bursty batch workloads.

More examples

Check Spot prices for node savings

Retrieves current Spot market prices for m5 instances to compare against On-Demand costs when planning node group budgets.

Example · bash
aws ec2 describe-spot-price-history \
  --instance-types m5.large m5.xlarge \
  --product-descriptions "Linux/UNIX" \
  --query 'SpotPriceHistory[*].{Type:InstanceType,Price:SpotPrice,AZ:AvailabilityZone}' \
  --output table

Tag cluster for cost allocation

Applies cost allocation tags to the EKS cluster ARN so AWS Cost Explorer can break down spending by team and environment.

Example · bash
aws eks tag-resource \
  --resource-arn arn:aws:eks:us-east-1:123456789012:cluster/prod \
  --tags Environment=prod,Team=platform,CostCenter=cc-1001

Fargate pod with sized resources

Fargate bills per vCPU-second and GB-second; precise resource requests directly control the cost of each Fargate pod.

Example · yaml
apiVersion: v1
kind: Pod
metadata:
  name: batch-job
spec:
  containers:
  - name: worker
    image: my-batch:latest
    resources:
      requests:
        cpu: "0.5"
        memory: "1Gi"
      limits:
        cpu: "0.5"
        memory: "1Gi"

Discussion

  • Be the first to comment on this lesson.