Amazon EKS — EKS vs ECS vs Fargate
AWS offers three main ways to run containers. Understanding the differences helps you pick the right service for your workload.
Quick Comparison
| Feature | EKS | ECS | Fargate |
|---|---|---|---|
| Orchestrator | Kubernetes | AWS-proprietary | Not an orchestrator — it’s a compute engine |
| Portability | Run anywhere (any K8s cluster) | AWS only | AWS only (works with EKS and ECS) |
| Learning Curve | Steeper (Kubernetes ecosystem) | Lower (AWS-native API) | Lowest (no node management) |
| Ecosystem | Huge CNCF ecosystem (Helm, ArgoCD, Prometheus) | AWS-ecosystem tools | Uses EKS or ECS ecosystem |
| Control | Full control over cluster and nodes | Moderate control | Least control (serverless) |
| Pricing | $0.10/hr control plane + compute | No control plane fee + compute | Per vCPU/memory per second |
| Node Management | You manage (or Fargate) | You manage (or Fargate) | AWS manages everything |
| Multi-Cloud | Yes (K8s runs anywhere) | No | No |
Understanding Fargate
Fargate is not an orchestrator. It’s a serverless compute engine that works with both EKS and ECS.
Think of it this way:
- EKS = Orchestrator (uses Kubernetes to schedule pods)
- ECS = Orchestrator (uses AWS task definitions to schedule containers)
- Fargate = Compute option (removes the need to manage EC2 instances)
You can run:
- EKS on EC2 — You manage the worker nodes
- EKS on Fargate — AWS manages the compute (serverless pods)
- ECS on EC2 — You manage the container instances
- ECS on Fargate — AWS manages the compute (serverless tasks)
EKS on EC2 vs EKS on Fargate
| Aspect | EKS on EC2 | EKS on Fargate |
|---|---|---|
| Node Management | You manage EC2 instances | No nodes to manage |
| DaemonSets | Supported | Not supported |
| GPU Workloads | Supported | Not supported |
| Persistent Storage | EBS + EFS | EFS only (no EBS) |
| Pricing | EC2 instance pricing | Per-pod vCPU + memory pricing |
| Pod Density | Multiple pods per node | One pod per micro-VM |
| Startup Time | Fast (pods on existing nodes) | Slower (~30-60s cold start) |
| HostNetwork | Supported | Not supported |
| Privileged Containers | Supported | Not supported |
| Cost for Steady Workloads | Lower (better bin-packing) | Higher (overhead per pod) |
| Cost for Bursty Workloads | Higher (idle nodes) | Lower (pay-per-pod) |
When to Choose EKS
Choose EKS when:
- Your team already knows Kubernetes
- You need multi-cloud or hybrid portability
- You want access to the CNCF ecosystem (Helm, ArgoCD, Prometheus, Istio)
- You’re running complex microservices architectures
- You need custom controllers or operators
- You want to avoid vendor lock-in on the orchestration layer
When to Choose ECS
Choose ECS when:
- You’re an AWS-only shop and want the simplest container orchestration
- Your team doesn’t need Kubernetes-specific features
- You want zero control plane costs
- You’re running a small number of services
- You prefer AWS-native tooling over the CNCF ecosystem
When to Choose Fargate
Add Fargate to either EKS or ECS when:
- You don’t want to manage, patch, or scale EC2 instances
- You have bursty, unpredictable workloads
- You’re running batch jobs with varying demand
- You want strong pod-level isolation (each pod in its own micro-VM)
- Your workloads don’t need DaemonSets, GPUs, or privileged access
Decision Flowchart
Do you need Kubernetes specifically?
├── YES → Use EKS
│ ├── Need DaemonSets, GPUs, or privileged? → EKS on EC2
│ ├── Bursty workloads, no node mgmt? → EKS on Fargate
│ └── Mix of both? → EKS on EC2 + Fargate profiles
│
└── NO → Do you need the simplest AWS container service?
├── YES → Use ECS
│ ├── Steady workloads, cost-optimize? → ECS on EC2
│ └── Variable workloads, ops-minimize? → ECS on Fargate
│
└── Not sure → Start with ECS on Fargate (lowest barrier)
Cost Comparison Example
For a workload running 10 pods (each 0.5 vCPU, 1 GB memory) 24/7 in us-east-1:
| Option | Monthly Cost (Approx.) |
|---|---|
| EKS on EC2 (2x m5.large On-Demand) | ~$73 (EKS) + ~$140 (EC2) = ~$213 |
| EKS on Fargate (10 pods) | ~$73 (EKS) + ~$240 (Fargate) = ~$313 |
| ECS on EC2 (2x m5.large On-Demand) | $0 (ECS) + ~$140 (EC2) = ~$140 |
| ECS on Fargate (10 tasks) | $0 (ECS) + ~$240 (Fargate) = ~$240 |
Key Takeaway: EKS has a control plane cost ($73/mo). ECS does not. Fargate is more expensive than EC2 for steady workloads but eliminates node management. Choose based on your operational priorities, not just raw cost.
What’s Next?
Now let’s look at the EKS architecture — how the control plane and data plane work together.