Every pod start pulls an image. Multiply a 1.2 GB image by a few thousand pulls a day and registry traffic becomes a real line item, especially when the registry sits in another region or another cloud.
Serverless wins decisively at low and medium scale. There is a point where sustained, predictable load makes containers or instances cheaper, and it is more specific than most rules of thumb suggest.
Registries are append only by default, so every build ever produced is still there. At a few hundred megabytes per image and dozens of builds a day, storage compounds quietly for years. Here is how retention policies change the number.
On EKS you can run pods on EC2 nodes you manage or on Fargate serverless capacity. Fargate removes node management and bills per pod, EC2 nodes are cheaper per unit but require you to run and pack them. Here is the cost tradeoff.
Kubernetes pod requests reserve node capacity whether used or not, so over-set requests waste cluster resources and money. Right-sizing requests and limits to real usage packs more work onto fewer nodes. Here is how.
Building container images consumes CI compute, and slow builds that rebuild everything waste minutes. Layer caching, small base images, and multi-stage builds cut build time and cost. Here is how.
AWS ECR and GCP Artifact Registry price per GB stored plus egress; Azure ACR uses a flat daily tier fee bundling storage. The cheapest depends on registry size and pull topology. This compares the models and the shared levers.
Azure Container Instances bills per vCPU-second and memory-GB-second while a container runs, with no cluster to manage or idle. It suits bursty and short-lived containers; steady workloads are cheaper on AKS. Here is the model.
Artifact Registry charges about $0.10 per GB-month of storage (first 0.5 GB free) plus network egress for downloads. In-region pulls to Google compute are cheap; cross-region and internet pulls add transfer. Here is the breakdown and how to trim it.
ACR charges a fixed daily fee by tier (Basic around $5/month, Standard around $20, Premium around $50) that includes storage and throughput, plus overages and data transfer. The tier, not usage, sets most of the bill. Here is how to choose.
App Runner bills active compute (vCPU and memory) while serving requests and a lower provisioned charge for memory when idle. That idle floor matters for low-traffic services. Here is how the two rates work and when App Runner is worth it.
Elastic Container Registry charges $0.10 per GB-month of image storage, trivial for most teams. The real cost is data transfer: cross-region and internet pulls add up, while pulls to ECS or EKS in the same region are free. Here is the full breakdown.
Fargate costs 15-50% more per vCPU and GB than EC2, but you pay for zero idle capacity. Here's where the crossover actually is, why dense fleets favor EC2, and when Fargate's premium is the cheapest line on the bill.
Lambda wins for sporadic and event-driven workloads. Containers win for steady high-volume traffic. The crossover is around 2-3M requests/day for typical APIs. Here's the math, the workload archetypes, and a decision framework.
The honest cost comparison between EKS and ECS, including control plane fees, Fargate vs EC2 trade-offs, and when each platform makes financial sense. With concrete numbers from a 10-service production fleet.