Skip to content
EKS
AWS track · Compute

EKS

AWS's managed Kubernetes control plane — AWS runs the API server, scheduler, and etcd across multiple Availability Zones (a minimum of two API server instances, etcd spanning three AZs) and auto-scales that control plane as your cluster grows, though not instantly. You bring the workloads and choose the compute: managed node groups, self-managed EC2, or Fargate, mixable within one cluster; VPC CNI gives pods real routable VPC IPs by default, not an overlay; Cluster Autoscaler or Karpenter handles scaling (pick one, never both); IRSA or Pod Identity grants pods AWS permissions. Ten real decisions determine whether that trade actually pays off, starting with whether you needed Kubernetes at all. Start at one, not wherever looks interesting.

Decision drivers for this product
01
Whether the team already has Kubernetes operational experience, or is adopting it fresh alongside EKS.
02
Whether a genuine multi-cloud portability or CNCF-ecosystem requirement exists, vs. "Kubernetes is the standard."
03
Compute mix — steady-state vs. bursty vs. per-pod-isolation workloads — since this drives the managed-node-group/Fargate/self-managed split.
04
Cluster-wide DaemonSet dependencies (observability agents, security agents) that don't run on Fargate.
05
How many clusters the org runs and how disciplined the Kubernetes-version-upgrade cadence is, since that directly drives the Facet 2a cost cliff.
Decision sequence
01
Core one-way-door
Choosing Between Managed Node Groups, Fargate, and Self-Managed EC2 Before DaemonSets Make the Choice for You
Free
02
Cost & billing mechanics
Budgeting for the Version-Support Cliff Before Extended Support Multiplies Your Control-Plane Bill by 6x

EKS's control-plane fee isn't flat forever — it's a two-tier system tied to how current your Kubernetes minor version is, not to cluster size or traffic. Standard support runs $0.10/cluster/hour for 14 months from a version's EKS release date; the moment that window closes, the cluster is automatically enrolled in Extended Support at $0.60/cluster/hour — a 6x increase — for up to 12 more months, with no opt-in and no warning banner. Multi-cluster topologies (isolating dev/staging/prod, or per-business-unit clusters) multiply this fixed fee across every cluster before a single pod is scheduled.

Free
03
Cost & billing mechanics
Defaulting to EC2 Over Fargate Once DaemonSet Sidecars Cross the 15–20% Overhead Line

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.

Free
04
Connectivity & network identity
Enabling Prefix Delegation Before VPC CNI Runs Out of IP Addresses — sign in to unlock

VPC CNI trades pod density for native VPC networking — every pod gets a real, routable VPC IP address (no overlay, no NAT between pods and other VPC resources) — at the cost of pod count being bound to how many IP addresses the underlying EC2 instance's ENIs can hold, not how much CPU/memory the instance has. This is the client-discoverable network-identity decision the spec's Slot B is built around — pods carry real, routable, discoverable VPC addresses, not an overlay identity hidden behind NAT.

05
Security & identity
Defaulting to Pod Identity Before Fargate Forces You Back to IRSA — sign in to unlock

IRSA trades setup complexity (a per-cluster OIDC provider, a trust policy tied to a specific service account and audience) for the most battle-tested, broadly-compatible way to grant pods scoped AWS permissions. EKS Pod Identity trades some of that flexibility for significantly simpler setup — no per-cluster OIDC provider, no bumping into the 100-OIDC-providers-per-account limit, and IAM roles reusable across multiple clusters without re-wiring trust policies each time. This is the identity model materially distinct from vanilla IAM that the spec's Slot A is built around.

06
Scaling & capacity limits
Defaulting to Karpenter for New Clusters, and Cutting Over Cleanly When Migrating an Existing One — sign in to unlock

Cluster Autoscaler trades provisioning speed and Karpenter's flexibility for maturity, ASG-native compliance hooks, and predictable behavior on static, homogeneous fleets. Karpenter trades that ASG abstraction for direct EC2 Fleet API calls — bypassing Auto Scaling Groups entirely, which is both its main advantage (no 450-node-per-ASG ceiling, tighter bin-packing, per-workload instance-type selection) and its main compatibility constraint (no ASG lifecycle hooks, no ASG-native dynamic scaling policies).

07
Scaling & capacity limits
Provisioning Control Plane Capacity Ahead of Bursts Before etcd Stops Accepting Writes — sign in to unlock

EKS's control plane auto-scales as your cluster grows, trading a fixed, always-large control plane (expensive, wasteful for small clusters) for one that scales with load — but "auto-scales" doesn't mean "scales instantly to any burst," and the rate limit is the part nobody reads until they hit it.

08
Failure mode & consistency
Cutting Node-Failure Recovery Time Before a Dead Node Blocks a StatefulSet for Six Minutes — sign in to unlock

EKS's control plane doesn't reschedule pods the instant a node dies — it trades immediate reaction for stability, waiting out fixed timeout windows before concluding a node is actually gone, on the assumption that most "failures" are transient network blips that shouldn't trigger a stampede of rescheduling. That conservatism is invisible until the node really is dead, at which point it becomes pure latency with no offsetting benefit.

09
Operational lifecycle
Sequencing Add-Ons Before the Control Plane, and Auditing Deprecated APIs Before Either — sign in to unlock

EKS decouples the control plane, the managed add-ons (VPC CNI, CoreDNS, kube-proxy, EBS CSI driver), and the worker-node AMIs into independently-versioned components — which buys flexibility but trades away any single "upgrade the cluster" button. Get the order wrong and you can complete an upgrade successfully at the control-plane level while breaking pod scheduling or deployments entirely at the layer just below it.

10
Wrong-tool / alternatives
Ruling Out EKS: When ECS or Self-Managed Kubernetes Is the Right Call Instead — sign in to unlock

EKS trades the operational simplicity of ECS (a proprietary, AWS-native orchestrator with a much smaller conceptual surface area) for the Kubernetes ecosystem itself — the CNCF tooling, the portable API, the hiring pool that already knows kubectl. That trade is worth almost nothing if your team doesn't already have Kubernetes operational experience and doesn't need portability or the broader ecosystem. Every EKS-focused guide — including every page before this one — assumes you've already decided Kubernetes is the right abstraction; this is the page every competitor's content skips.