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.
| Dimension | Unit | What's being charged |
|---|---|---|
| Cluster hours | per hour | Flat rate for the EKS control plane. $0.10/hour ≈ $73/month per cluster |
| Node group EC2 instances | per hour per instance | Worker nodes are regular EC2 instances. Billed at on-demand EC2 rates by instance type and region. |
| Node root and data volumes | per GB-month | Each worker node has an EBS root volume. Billed as gp3 by default. |
| Fargate vCPU-seconds | per vCPU-hour | Pods on Fargate are billed by requested vCPU, rounded up to 0.25 vCPU. $0.04048 per vCPU-hour |
| Fargate memory-seconds | per GB-hour | Pods 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/monthEach 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 computeEKS 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 computeVertical 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 computeKarpenter 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.