EKS
Defaulting to EC2 Over Fargate Once DaemonSet Sidecars Cross the 15–20% Overhead Line
- Ratio of sidecar resource requests to primary-container requests for the workload in question
- Whether the workload is long-running/steady-state vs. genuinely short-lived/bursty
- Number of continuously-running pods at fleet scale (drives whether the duplication tax is a rounding error or a real cost line)
- Whether the observability/security stack can run as a lighter sidecar variant, or requires the full DaemonSet-equivalent footprint per pod
Production premise
Fargate's per-pod billing (exact vCPU/memory requested, per-second, one-minute minimum) is straightforward in isolation — the cost distortion comes from what page 1 already flagged: every DaemonSet a workload would normally share with dozens of node-mates has to be re-injected as a sidecar in every single pod instead. You're not paying Fargate's rate for your app container; you're paying it for your app container plus a full duplicate observability/security stack, once per pod, permanently.
Failure mode & inflection point
the cost inflection lands once injected-sidecar resource requests cross roughly 15–20% of the primary container's own allocation. A microservice requesting 0.5 vCPU/1 GB that picks up a logging sidecar (0.1 vCPU/128 MB) and an APM sidecar (0.15 vCPU/256 MB) is now billed at 0.75 vCPU/1.38 GB — a 50% surcharge on that pod alone. At fleet scale (roughly 500 continuously-running pods), that duplication tax is enough to make Fargate 35–60% more expensive than the equivalent bin-packed EC2 fleet, where one DaemonSet instance serves dozens of co-located pods instead of being cloned per pod.
Production guardrail
restrict Fargate to short-lived, bursty execution — CI/CD job runners, batch tasks under roughly 15 minutes — where node-provisioning latency is the actual pain point and DaemonSet overhead is zero during idle time anyway. Standard long-running microservices carrying mandatory observability or security sidecars should default to EC2 managed node groups or Karpenter-provisioned nodes, where the DaemonSet model amortizes the agent cost across every pod on the node instead of billing it per pod.