Kubernetes costs surprise teams because the invoice has four independent line items that scale at different rates: compute (node instances), storage (PVs, snapshots, object storage), networking (load balancers, data egress, cross-AZ traffic), and the control plane fee.
Control plane fees: AWS EKS charges $0.10/hour per cluster ($72/month) regardless of size. Google GKE charges $0.10/hour for Autopilot or $0/hour for Standard clusters under 5 nodes (Zonal). Azure AKS charges $0.10/hour per cluster. That's $72/month before a single workload runs.
Compute is the dominant cost driver. A standard 3-node cluster of m5.xlarge (4 vCPU, 16GB) on EKS costs ~$450/month on-demand. Spot instances cut this 60-80% — a common pattern is running 20% on-demand for stable workloads and 80% on spot with node affinity rules to handle interruptions.
Networking costs are where teams get blindsided. Cross-AZ traffic in AWS costs $0.01/GB in each direction. A microservices architecture with 5 services talking to each other across 3 AZs can generate hundreds of gigabytes of cross-AZ traffic daily. The fix is locality-aware routing (topology hints in k8s 1.24+) and co-locating chattiest service pairs.
Storage snapshot costs accumulate quietly. A 100GB PV with daily snapshots retained for 30 days = 3TB of snapshot storage at $0.05/GB = $150/month just in snapshots.
A realistic small production cluster (3 control plane + 3 worker nodes, 2 load balancers, 200GB storage, modest egress) runs $600-900/month on EKS. The same workload on a bare-metal Hetzner host costs $80/month — which is why teams reaching scale evaluate alternatives.