AWSAmazon EKSContainers

aws_eks_cluster cost estimation

A managed Kubernetes control plane. Flat $0.10/hour per cluster, with worker nodes and storage billed separately.

An aws_eks_cluster is a managed Kubernetes control plane. AWS runs the API server, etcd, scheduler, and controller manager across multiple availability zones. Pricing is deceptively simple: the cluster itself costs $0.10/hour (about $73/month), regardless of how many pods or workloads you run.

The cluster price is just the start. The real cost comes from compute, which is billed separately depending on which compute mode you use:

Standard node groups (aws_eks_node_group) use EC2 instances you manage. You pay regular EC2 prices for the instances plus EBS for the root and data volumes.

Fargate profiles (aws_eks_fargate_profile) bill per pod by requested CPU and memory, rounded up to the nearest 1 GB-second and 0.25 vCPU-second. Often cheaper than maintaining a fleet of partially-utilized EC2 nodes.

Managed add-ons like the EKS-managed kube-proxy, CoreDNS, and VPC CNI are free. The optional Cluster Auto Scaler add-on is also free.

c3x estimates the cluster price plus any declared node groups and Fargate profiles. For Fargate, pod CPU/memory comes from the profile selectors and pod spec; c3x assumes 24/7 running unless a usage file overrides it.

Terraform example

A minimal but realistic configuration that C3X can estimate.

resource "aws_eks_cluster" "main" {
  name     = "production"
  role_arn = aws_iam_role.cluster.arn
  version  = "1.31"

  vpc_config {
    subnet_ids = aws_subnet.private[*].id
  }
}

resource "aws_eks_node_group" "general" {
  cluster_name    = aws_eks_cluster.main.name
  node_group_name = "general"
  node_role_arn   = aws_iam_role.node.arn
  subnet_ids      = aws_subnet.private[*].id
  instance_types  = ["m6i.large"]

  scaling_config {
    desired_size = 3
    min_size     = 2
    max_size     = 10
  }
}

Pricing dimensions

What you actually pay for when you provision aws_eks_cluster.

DimensionUnitWhat's being charged
Cluster hoursper hourFlat rate for the EKS control plane.
$0.10/hour ≈ $73/month per cluster
Node group EC2 instancesper hour per instanceWorker nodes are regular EC2 instances. Billed at on-demand EC2 rates by instance type and region.
Node root and data volumesper GB-monthEach worker node has an EBS root volume. Billed as gp3 by default.
Fargate vCPU-secondsper vCPU-hourPods on Fargate are billed by requested vCPU, rounded up to 0.25 vCPU.
$0.04048 per vCPU-hour
Fargate memory-secondsper GB-hourPods on Fargate are billed by requested memory, rounded up to 1 GB.
$0.004445 per GB-hour

Optimization tips

Common ways to reduce aws_eks_cluster cost without changing the workload.

Consolidate clusters across environments

$73/cluster/month

Each cluster costs $73/month minimum. A team running separate dev, staging, and prod clusters pays $219/month just for control planes. Use namespaces and RBAC to consolidate where security boundaries allow.

Use Spot instances for stateless workloads

50-80% on compute

EKS node groups can be configured with capacity_type = 'SPOT'. Combined with karpenter or cluster autoscaler, you can run 60-90% of nodes on Spot for 50-80% lower compute cost.

Right-size with VPA recommendations

30-60% on compute

Vertical Pod Autoscaler in recommendation-only mode shows actual CPU and memory usage per workload. Typical findings: pods request 4-10x what they actually use. Resizing requests directly cuts node count.

Use Karpenter instead of cluster-autoscaler

10-30% on compute

Karpenter provisions instance types matched to pending pod requirements. Often picks cheaper instance types than a fixed node group can, including ARM-based Graviton.

FAQ

Why does the EKS cluster show $73/month even with no workloads?

The control plane has a flat hourly rate regardless of pod count. Even an empty cluster costs $73/month. To avoid this in dev environments, consider single-node k3s or kind clusters instead.

Does c3x estimate Fargate pod costs?

Yes, if you declare aws_eks_fargate_profile and the pod specs (typically via Helm or kubectl). c3x reads CPU and memory requests, rounds up per the Fargate pricing rules, and computes per-pod monthly cost.

What about EKS Auto Mode?

EKS Auto Mode adds a per-instance management fee on top of EC2 instance hours. c3x detects auto-mode-enabled node groups and applies the additional charge.

Do I pay for load balancers separately?

Yes. Each Service of type LoadBalancer provisions an aws_lb. c3x estimates load balancers separately. Ingress controllers like ALB ingress controller are also load balancers.

Related resources

Estimate this resource in your own Terraform

Free, open source, no API key. C3X parses your Terraform and shows line-item cost for every resource, including aws_eks_cluster.