Amazon EKS

Amazon EKS Explained From Zero

A complete, plain-English walkthrough of Amazon Elastic Kubernetes Service — what it is, how it works under the hood, and how companies like Netflix, Snap, and HSBC run production workloads on it.

Imagine you run a restaurant. You don’t personally build the stoves, wire the electricity, or install the fire-suppression system — a kitchen-equipment company handles that heavy infrastructure, and you focus on cooking and serving customers. Amazon EKS does something similar for a technology called Kubernetes. It hands you a fully managed “kitchen” so your engineering team can focus on running applications instead of babysitting servers. In this guide, you’ll learn exactly what that means, piece by piece, with no assumed background in containers, Kubernetes, or AWS.

1What Is Amazon EKS?

The starting point: what EKS actually is, and the problem it was built to solve.

Amazon Elastic Kubernetes Service, or EKS, is a managed service that runs Kubernetes for you on AWS. Kubernetes itself is an open-source system for running applications inside containers — lightweight, self-contained packages that bundle an application with everything it needs to run (code, libraries, settings) so it behaves the same way on any machine. Kubernetes’ job is to decide where those containers run, restart them if they crash, scale them up when traffic increases, and network them together. EKS takes the hardest part of Kubernetes — running and maintaining its “brain,” called the control plane — and manages it for you, patched, backed up, and highly available, so your team never has to install or upgrade that brain by hand.

Why Kubernetes Exists in the First Place

Before containers, companies ran applications directly on physical or virtual servers. If an application needed more computing power, an engineer had to manually provision a new server, install dependencies, and configure networking — a process that could take hours or days. Containers solved the “it works on my machine” problem by packaging an app with its dependencies. But once a company has hundreds or thousands of containers, someone has to decide which physical machine each container runs on, restart failed containers, and route traffic to healthy ones. Kubernetes, originally built at Google and open-sourced in 2014, was designed to automate exactly that job at massive scale.

Everyday Analogy

Think of Kubernetes as an air-traffic control tower for containers. Individual planes (containers) don’t need to know which runway is free or how to avoid collisions — the tower (Kubernetes) tracks every plane, assigns runways, and reroutes flights when one is delayed or grounded. EKS is like hiring an already-trained, government-certified air-traffic control team instead of building and training your own tower staff from scratch.

Key Idea

EKS does not replace Kubernetes — it is Kubernetes, upstream and standards-compliant. AWS simply operates the control plane for you and integrates it tightly with AWS networking, identity, and storage services.

A production example: Snap Inc. (the company behind Snapchat) moved much of its backend infrastructure onto EKS to avoid the operational burden of running Kubernetes control planes themselves across multiple environments, letting their platform team focus on developer tooling instead of patching Kubernetes internals.

2Architecture & Core Components

The building blocks that make up an EKS cluster, and how they fit together.

Every EKS cluster is split into two halves: a control plane that AWS manages, and a data plane where your actual application containers run. Understanding this split is the single most important mental model for EKS.

Control Plane

API Server

The front door of the cluster. Every command — from you, from kubectl, or from other components — passes through here first.

Control Plane

etcd

A distributed key-value database that stores the entire desired state of the cluster: what should be running, and where.

Control Plane

Scheduler

Decides which worker node a new container should run on, based on available CPU, memory, and placement rules.

Control Plane

Controller Manager

Continuously watches the cluster and corrects drift — for example, restarting a container that unexpectedly stopped.

Data Plane

Worker Nodes

EC2 instances (or Fargate capacity) that actually run your containers, grouped into “pods.”

Data Plane

Kubelet

An agent on every node that talks to the control plane and starts/stops containers as instructed.

flowchart TB
    subgraph CP["AWS-Managed Control Plane"]
        API["API Server"]
        ETCD["etcd (Cluster State)"]
        SCHED["Scheduler"]
        CTRL["Controller Manager"]
    end
    subgraph VPC["Your VPC"]
        subgraph DP["Data Plane"]
            N1["Worker Node 1
(EC2 / Fargate)"] N2["Worker Node 2
(EC2 / Fargate)"] end ALB["Application Load Balancer"] end DEV["Developer (kubectl)"] --> API API --> ETCD API --> SCHED SCHED --> N1 SCHED --> N2 CTRL --> API USER["End User"] --> ALB ALB --> N1 ALB --> N2 N1 -.reports status.-> API N2 -.reports status.-> API
Fig 1 — Control plane vs. data plane in an EKS cluster running inside your VPC

Notice that the control plane components (API Server, etcd, Scheduler, Controller Manager) live in an AWS-owned account, invisible to you and automatically spread across multiple Availability Zones. Your worker nodes, by contrast, live inside your VPC, so you retain full control over networking, security groups, and IAM permissions for the actual compute running your code.

Real Component in Action: The AWS Load Balancer Controller

When a Kubernetes “Service” of type LoadBalancer is created, an add-on called the AWS Load Balancer Controller automatically provisions a real Application Load Balancer or Network Load Balancer and wires it to the correct pods — bridging Kubernetes concepts with native AWS infrastructure.

3How EKS Works Internally

What actually happens, step by step, when a container starts running.

Kubernetes operates on a declarative model: instead of telling it “start this container now,” you tell it “I want 3 copies of this application running at all times,” and the system continuously works to make reality match that desired state. This loop is called the reconciliation loop, and it is the beating heart of how EKS — and Kubernetes generally — stays self-healing.

1

Desired State Submitted

You apply a YAML manifest describing “run 3 replicas of my web app” via kubectl, which sends the request to the API Server.

2

State Persisted

The API Server validates the request and writes the desired state into etcd, the cluster’s source of truth.

3

Scheduling Decision

The Scheduler notices new, unplaced pods and picks the best-fit worker node based on available CPU, memory, and any placement rules.

4

Node Executes

The kubelet on the chosen node pulls the container image and starts the container using the node’s container runtime.

5

Continuous Reconciliation

The Controller Manager keeps comparing actual state to desired state forever — if a pod crashes, it schedules a replacement automatically.

Everyday Analogy

It’s like telling a thermostat “keep this room at 70°F” rather than manually turning a heater on and off. You state the goal once; the system continuously senses and corrects to maintain it, without you intervening every time the temperature drifts.

!
Common Misunderstanding

EKS does not automatically manage your worker nodes’ operating system patches or scale them unless you explicitly configure a node group, Managed Node Group, or Karpenter/Cluster Autoscaler. The control plane is managed; the data plane’s automation is something you configure.

4Data Flow & Request Lifecycle

Following a single user request from the internet all the way to a running container.

Understanding architecture is one thing; watching a real request travel through the system makes it click. Consider a customer opening a shopping app whose backend runs on EKS.

sequenceDiagram
    participant U as End User
    participant R53 as Route 53 (DNS)
    participant ALB as Application Load Balancer
    participant SVC as Kubernetes Service
    participant POD as Pod (Container)
    U->>R53: Resolve shop.example.com
    R53-->>U: ALB IP address
    U->>ALB: HTTPS request
    ALB->>SVC: Forward to healthy target
    SVC->>POD: Route to matching pod
    POD-->>SVC: Response
    SVC-->>ALB: Response
    ALB-->>U: Final response
    
Fig 2 — A single customer request traveling from DNS to a running pod

Behind the scenes, the Kubernetes Service object acts as a stable internal address, because pods are ephemeral — they can be destroyed and recreated with new internal IP addresses at any time (during a deployment, a crash, or a scale-down event). The Service continuously tracks which pods are currently healthy using health checks and updates its routing table (technically implemented via kube-proxy and Linux networking rules) so traffic never gets sent to a dead container.

This lifecycle also applies in reverse for scaling events: if CPU usage across pods crosses a threshold, the Horizontal Pod Autoscaler requests more replicas, which flows back through the same reconciliation loop described in Chapter 3 — new pods are scheduled, started, and registered with the Service, typically within seconds.

5Advantages, Disadvantages & Trade-offs

EKS solves real problems — but it isn’t free of complexity or cost trade-offs.

Advantages

  • AWS manages control plane availability, patching, and upgrades across multiple Availability Zones
  • Deep native integration with IAM, VPC, ALB/NLB, EBS, EFS, and CloudWatch
  • Fully standards-compliant Kubernetes — portable skills and manifests across clouds
  • Supports both EC2 worker nodes and serverless Fargate pods
  • Huge open-source ecosystem: Helm charts, operators, service meshes all work unmodified

Disadvantages / Trade-offs

  • Hourly control-plane charge exists even for a completely idle cluster
  • Kubernetes’ own conceptual surface area (pods, services, ingress, RBAC) is genuinely large for newcomers
  • You are still responsible for patching worker node operating systems (unless using Fargate)
  • Networking (VPC CNI, security groups per pod) requires deliberate design at scale
  • Misconfigured IAM or RBAC can create serious security gaps if not carefully reviewed

The trade-off in one sentence: EKS removes the operational burden of running Kubernetes’ control plane, but it does not remove the conceptual burden of learning Kubernetes itself, nor the responsibility of securing and scaling your own worker nodes.

6Performance & Scalability

How EKS clusters grow to handle traffic spikes — and their limits.

EKS scales along two independent dimensions. Pod-level scaling happens via the Horizontal Pod Autoscaler, which adds or removes container replicas based on CPU, memory, or custom metrics (like queue depth). Node-level scaling happens via the Cluster Autoscaler or the newer, faster Karpenter tool, which adds or removes entire EC2 instances so there’s enough physical capacity to place those new pods.

100
MANAGED NODES SUPPORTED PER MANAGED NODE GROUP
1000s
OF PODS PER CLUSTER AT PRODUCTION SCALE
3
AZs TYPICALLY SPANNED FOR HA CONTROL PLANE

A well-known example: Netflix uses container orchestration across its edge and internal services to absorb massive, unpredictable viewing spikes — such as a new season release — by scaling compute out horizontally in minutes rather than hours. The pattern EKS enables is the same: define scaling rules once, and let the reconciliation loop from Chapter 3 continuously add capacity as demand rises, then shrink it back down to save cost when demand falls.

Beginner Tip

Scaling pods without scaling nodes just creates pods stuck in “Pending” state with nowhere to run. Always pair the Horizontal Pod Autoscaler with a node-level autoscaler.

7High Availability & Reliability

How EKS avoids single points of failure at every layer.

AWS runs the EKS control plane across a minimum of three Availability Zones automatically, with the API Server load-balanced and etcd replicated behind the scenes — you never provision this redundancy yourself. Reliability of your own applications, however, is something you must design for: spreading worker nodes across multiple Availability Zones, and configuring Kubernetes to spread pod replicas across those nodes using topology spread constraints or pod anti-affinity rules, so a single zone outage doesn’t take your whole application down.

“The control plane’s high availability is AWS’s job. Your application’s high availability is still an architecture decision you have to make.”

If a worker node fails entirely — hardware failure, for instance — the Controller Manager detects the node’s kubelet has stopped reporting, marks its pods as unhealthy, and reschedules them onto healthy nodes automatically, typically within a few minutes, assuming spare capacity exists in the cluster.

8Security

The layers of protection between an attacker and your running containers.

Security in EKS spans several independent layers, and beginners often assume one setting covers everything. It doesn’t. The main layers are:

Identity

IAM & IRSA

IAM Roles for Service Accounts lets individual pods assume narrowly scoped AWS permissions, instead of sharing one broad node-wide role.

Cluster

Kubernetes RBAC

Controls which users or service accounts can create, read, or delete which Kubernetes resources — independent from AWS IAM.

Network

Security Groups & Network Policies

Security groups control traffic at the AWS network layer; Kubernetes Network Policies control which pods may talk to which other pods.

Runtime

Pod Security Standards

Restrict what containers are allowed to do — for example, preventing a container from running as the root user.

Everyday Analogy

Securing an EKS cluster is like securing an office building: you need a badge system to enter the building (IAM), a key to a specific floor (RBAC), locked doors between departments (Network Policies), and rules about what employees can touch once inside a room (Pod Security Standards). Locking only the front door leaves every internal door wide open.

HSBC and other regulated financial institutions running workloads on EKS commonly layer all four of these controls together, plus AWS-native services like GuardDuty for threat detection, precisely because compliance requirements demand defense-in-depth rather than a single security boundary.

9Monitoring, Logging & Metrics

How teams know what’s actually happening inside a running cluster.

EKS integrates with Amazon CloudWatch Container Insights to collect CPU, memory, disk, and network metrics from every node and pod without manual instrumentation. Control-plane logs — API Server audit logs, authenticator logs, scheduler logs — can be selectively enabled and streamed to CloudWatch Logs, which is critical for security audits and debugging authentication failures.

Beyond AWS-native tooling, most production teams layer in the open-source ecosystem: Prometheus for metrics scraping, Grafana for dashboards, and Fluent Bit for shipping application logs. This combination lets engineers answer three different questions: is the cluster healthy (metrics), what exactly happened (logs), and why did this one slow request take so long (distributed tracing, often via AWS X-Ray or OpenTelemetry).

!
Common Trap

Control-plane logging is opt-in and off by default. Teams that skip enabling audit logs often discover this gap only after a security incident, when the exact API calls made during the incident are no longer recoverable.

10Deployment & Cloud Integration

How EKS clusters get created, and the two ways containers actually run.

Clusters are typically provisioned using Infrastructure as Code — most commonly Terraform or the AWS-native eksctl CLI — rather than clicked together manually, since production clusters need to be reproducible across environments (dev, staging, production).

Two Ways to Run Compute on EKS

EC2 worker nodes give you full control over instance type, OS, and cost optimization (including Spot Instances for non-critical workloads), but you patch and manage those instances. AWS Fargate runs each pod in its own isolated micro-VM with no node to manage at all — you pay per-pod resource usage instead, trading some cost efficiency at scale for zero operational overhead.

EKS also integrates natively with CI/CD pipelines: a common production pattern is GitHub Actions or AWS CodePipeline building a container image, pushing it to Amazon ECR (Elastic Container Registry), and then a GitOps tool like ArgoCD or Flux automatically syncing the new version into the cluster the moment the manifest changes in Git — removing manual deployment steps entirely.

11Design Patterns & Anti-Patterns

Proven patterns to reuse, and a well-known trap to avoid.
Pattern

Sidecar

A helper container (like a log shipper or proxy) runs alongside the main application container in the same pod, sharing its network and storage.

Pattern

Namespace Isolation

Separate teams or environments (dev/staging/prod) into distinct Kubernetes namespaces, each with its own RBAC and resource quotas.

Pattern

Blue-Green / Canary Rollouts

New versions are deployed alongside the old, receiving a small slice of traffic first, so failures affect only a fraction of users.

Pattern

Service Mesh

Tools like Istio or App Mesh add automatic retries, encryption, and traffic control between services without changing application code.

ANTI-PATTERN · AP-01Avoid
Pattern

Running every workload directly on the same shared, wide-open IAM role attached to every worker node (“god-mode node role”).

Why It Happens

It’s the fastest way to get a cluster working during early prototyping, so teams skip configuring per-pod IAM roles and never circle back.

Consequence

Any compromised container on that node inherits every permission the node has — turning one vulnerable application into a path to the entire AWS account.

Correct Approach

Use IAM Roles for Service Accounts (IRSA) or EKS Pod Identity so each workload only receives the specific AWS permissions it actually needs.

12Best Practices & Common Mistakes

Field-tested guidance that separates stable clusters from fragile ones.
Best PracticeCommon Mistake It Prevents
Set CPU/memory requests and limits on every podOne misbehaving pod consuming all node resources and starving others
Enable control-plane audit logging from day oneNo forensic trail available after a security incident
Use managed node groups or Karpenter, not manual EC2Nodes silently drifting out of sync with cluster requirements
Apply IRSA per workloadOverly broad node-wide IAM permissions
Run readiness and liveness probes on every deploymentTraffic routed to pods that are alive but not actually ready
Version-control all manifests (GitOps)Configuration drift between what’s running and what’s documented

The single most common beginner mistake is treating a Kubernetes cluster like a set of long-lived pet servers rather than disposable, replaceable units. Pods should be expected to restart, move, and be recreated constantly — applications must be written to tolerate that, storing no critical state directly inside a container’s local filesystem.

13Real-World & Industry Examples

How different companies actually use EKS in production.
Media

Snap Inc.

Runs core backend services on EKS to remove the operational burden of managing Kubernetes control planes across environments.

Finance

HSBC

Uses EKS with layered IAM, RBAC, and network security controls to meet strict financial-sector compliance requirements.

Gaming

Riot Games

Uses container orchestration patterns like those in EKS to deploy and scale backend services supporting global live-service games.

Streaming

Netflix

Applies the same horizontal-scaling philosophy EKS is built around to absorb massive, unpredictable viewership spikes.

Across industries, the common thread is the same: teams adopt EKS not because Kubernetes itself is new to them, but because they want AWS to own the operational weight of running its control plane reliably, so their own engineers can focus on the applications running on top of it.

14Frequently Asked Questions

Q1Is EKS the same as running Kubernetes myself on EC2?
No. Self-managed Kubernetes on EC2 requires you to install, patch, and keep the control plane (API Server, etcd, Scheduler) highly available yourself. EKS hands that entire responsibility to AWS.
Q2Do I still need to manage servers with EKS?
You manage your worker nodes (unless you use Fargate, which removes node management entirely) but never the control plane, which AWS fully operates and secures.
Q3Is EKS more expensive than plain EC2?
There is an hourly control-plane charge on top of your compute costs, but it typically pays for itself through reduced operational engineering time, especially at scale.
Q4Can EKS run on-premises?
Yes, via EKS Anywhere and EKS on Outposts, which extend the same Kubernetes experience and tooling to your own data center or edge locations.
Q5What’s the difference between a pod and a container?
A pod is Kubernetes’ smallest deployable unit and can hold one or more containers that share the same network and storage — most pods run exactly one container, with extras added only for sidecar patterns.

15Summary and Key Takeaways

What to Remember About Amazon EKS

  • EKS is managed Kubernetes: AWS runs and secures the control plane (API Server, etcd, Scheduler) across multiple Availability Zones automatically.
  • You still own the data plane: worker nodes, their patching, scaling, and security are your responsibility unless you use Fargate.
  • Everything follows a reconciliation loop: you declare desired state, and Kubernetes continuously works to match reality to it — the basis for self-healing.
  • Security is layered, not singular: IAM, Kubernetes RBAC, network policies, and pod security standards each protect a different boundary.
  • Scaling is two-dimensional: pods scale via the Horizontal Pod Autoscaler; nodes scale via Cluster Autoscaler or Karpenter — both are needed together.
  • Observability requires deliberate setup: control-plane audit logging and metrics collection are opt-in, not automatic.
  • Real companies — Snap, HSBC, Riot Games, Netflix — use EKS precisely to offload control-plane operations while keeping full Kubernetes portability.