Skip to main content

Kubernetes & Amazon EKS Explained: A Beginner's Guide

Backend Deep-Dive · Beginner Friendly

~16 min read · Updated for 2026 · No prior experience required

If the words Kubernetes and EKS have always felt like a wall of jargon, this is the guide that finally makes them click. We start from absolute zero — what a container even is — and build up, one idea at a time, until you can follow a single user request all the way through a real Amazon EKS cluster and back. Plain English, simple analogies, and a clear mental model instead of a pile of commands.

Prefer to read? Everything in the video is written out below. Skim the table of contents and jump to whatever you need.

TL;DR — the whole idea in six lines
  • Containers pack your app and its environment together so it runs the same everywhere.
  • Kubernetes is a manager that runs, heals, scales, and connects hundreds of containers for you.
  • Every cluster has a Control Plane (the brain) and Worker Nodes (the muscle).
  • You describe the desired state; Kubernetes works nonstop to match it.
  • Amazon EKS runs the Control Plane for you — real, managed Kubernetes on AWS.
  • You still own the nodes and apps; AWS owns the hard, boring, high-stakes brain.

Part 1 — Kubernetes, from the ground up

The problem: "but it works on my machine!"

Every developer has lived this. On your laptop the app runs perfectly — right language version, right database, right settings. You ship it to a production server and it crashes: older runtime, a different database version, missing dependencies, different config.

The root cause is simple. Your app and everything it depends on live in different places on every machine. Move the app, and its environment doesn't come with it. You're shipping a fish without the water.

The fix: containers

Analogy — a shipping container
It doesn't matter what's inside the big metal box — clothes, food, machinery. Every ship, truck, and crane handles it the same way, because the box is standard.

A software container is the same idea: a standardized box holding your app plus its exact environment — code, runtime, libraries, and config, all sealed together. Because the app and its world travel as one unit, it runs identically on your laptop, in test, and in production. "Works on my machine" becomes "works on every machine."

The new problem: hundreds of containers

Containers solve packaging — and immediately create a new problem. Real systems run dozens or hundreds of containers across many servers. Now, by hand, someone has to answer:

  • A container crashed at 3 AM — who restarts it?
  • Traffic spiked 10× — who adds more copies, fast?
  • A server died — who moves its containers somewhere healthy?
  • A new version ships — who updates everything with zero downtime?
  • How do all these containers even find and talk to each other?

Doing this manually is impossible. You need something to manage the containers for you.

What is Kubernetes?

Analogy — an orchestra conductor
Fifty musicians can't stay in sync alone. The conductor plays no notes — they keep everyone in time, and if one musician stops, the music still goes on.

Kubernetes (often shortened to k8s) is that conductor for your containers. You tell it what you want, and it makes it happen — and keeps it that way. Automatically, it will:

Runkeep the right number of copies alive
Healrestart or replace anything that dies
Scaleadd or remove copies as traffic changes
Connectgive containers stable addresses to talk
Updateroll out new versions with no downtime
Self-managewatch the system and fix drift, nonstop

The design: brain + muscle

Every cluster splits into two halves.

Control Plane — the brainMakes all decisions. Never runs your app itself.
Worker Nodes — the muscleReal servers that actually run your containers.

The brain sends instructions to the muscle: run this here, restart that, add two more copies there. Keep this split in your head — it's the key to understanding EKS later.

Inside the Control Plane

  • API Server — the front door. Everything talks to the cluster only through here.
  • etcd — the cluster's memory. A database storing the desired and current state of everything.
  • Scheduler — the matchmaker. Decides which node each new pod runs on.
  • Controllers — the watchdogs. Constantly compare "what you asked for" vs "what exists," and fix gaps.

Inside a Worker Node

  • kubelet — the on-site foreman that runs the pods the brain assigns.
  • kube-proxy — the switchboard that routes traffic to the right pod.
  • container runtime — the engine (e.g. containerd) that starts and stops containers.

The building blocks you'll use every day

Pod. The smallest unit Kubernetes runs. It wraps your container (Kubernetes never runs a bare container). Usually one pod = one container = one running copy of your app. Pods are disposable by design — cattle, not pets — created and destroyed constantly.

Deployment. You don't create pods by hand. You declare a wish — "I want 3 copies running" — and the Deployment keeps exactly that many alive. If one dies, a replacement appears within seconds. That's self-healing, on by default, no human paged.

Service. Because pods die and each new pod gets a new IP, you can't rely on a pod's address. A Service is a single, stable front door with a fixed name; it load-balances traffic across whichever pods are currently alive.

A few more words you'll hear constantly:

ObjectWhat it's for
NamespaceFolders for your cluster — keep dev, staging, and prod separate.
ConfigMapNon-secret settings kept outside your image (URLs, flags, tuning).
SecretSame idea, for sensitive values (passwords, API keys, tokens).
IngressThe smart doorway letting outside internet traffic reach the right Service.

The one idea that explains all of Kubernetes

Analogy — a thermostat
You set 22°C (desired). The thermostat constantly checks the room (actual) and heats or cools until they match — forever.
The reconciliation loop
Kubernetes works exactly like that thermostat. You declare a desired state; it runs a nonstop loop comparing desired vs actual, and acts to close any gap — then repeats, forever. Healing, scaling, and updating are all just this one loop running over and over.

Part 2 — Amazon EKS (the main event)

The catch: who runs the Control Plane?

That "brain" doesn't run itself. If you run plain Kubernetes yourself, you must set up and secure etcd, make the control plane highly available across data centres, patch and upgrade it constantly, back it up, test restores, and monitor it 24/7 — for every environment. It's heavy, boring, high-stakes work, and none of it is your actual product.

What is Amazon EKS?

Amazon EKS (Elastic Kubernetes Service) is managed Kubernetes. AWS runs the entire Control Plane for you — set up, highly available, patched, monitored, backed up. You just get a healthy, ready-to-use Kubernetes. Crucially:

  • It's real, unmodified Kubernetes — your skills and YAML transfer anywhere.
  • No control-plane babysitting — no etcd, no brain upgrades, no 3 AM pages for it.
  • It's AWS-native — plugs straight into AWS networking, security, storage, and scaling.

The most important idea: AWS vs You

The number-one source of EKS confusion is who's responsible for what. Here's the clean split:

AWS manages (the brain)You manage (the muscle + apps)
API Server & etcdWorker nodes (or let AWS run them)
High availability across 3 AZsYour pods, images & deployments
Version patching & upgradesHow much to scale
Backups & recoveryApp-level networking rules
24/7 health monitoringAccess & permissions
Remember this one line
AWS owns the brain. You own the muscle and the app. Everything else about EKS is a footnote to that split.

What an EKS cluster looks like

Up top: an AWS-managed Control Plane, replicated across three Availability Zones so no single data-centre failure can take it down — and you never touch it. Below: your VPC, your own private network, holding your worker nodes and pods. The managed control plane drives your nodes; AWS quietly runs the entire top half for you.

Where your containers run: three compute options

Managed Node GroupsFargateEKS Auto Mode
You manage nodes?Some — pick type & sizeNoneNone
Who scales them?You configure itAWS, per podAWS, automatically
Control levelHighestLowestLow, but flexible
Best forSteady, custom fleetsSpiky / simple apps"Just run it for me"
Rule of thumb
Start with Auto Mode or Fargate for simplicity. Move to Node Groups later, only when you need tighter control. Don't take on node management before you have to.

Networking, load balancing & security

Networking (VPC CNI). On EKS, a plugin called the VPC CNI gives every pod a real IP from your VPC. Each pod becomes a first-class citizen on your AWS network and can talk to RDS, S3, and other services naturally.

Load balancing. The AWS Load Balancer Controller watches your cluster and automatically creates a real AWS load balancer (ALB/NLB) the moment you expose an app. You declare intent; the infrastructure appears — you never wire up load balancers by hand.

Security. Pods often need to reach AWS services. The wrong way is pasting AWS keys into the app — if it leaks, attackers get everything. The EKS way stores no keys at all: each pod is mapped to an IAM Role and handed temporary, least-privilege, auto-rotated credentials. The features that do this are IRSA and EKS Pod Identity.

Storage & scaling. CSI drivers let a pod claim real AWS storage — EBS (fast personal disk) or EFS (shared files) — so data survives a pod restart. And scaling happens on two layers: the HPA adds pod copies when traffic rises, while Karpenter adds servers so those pods have somewhere to run (and both scale back down to save money).

Putting it together: one user request, end-to-end

  1. A user opens your app.
  2. Route 53 (DNS) resolves the address of your system.
  3. The request hits your ALB (load balancer).
  4. The ALB hands it to your Service, which picks a healthy pod.
  5. Your code runs inside a Pod. If it needs data, it uses its Pod Identity to reach RDS or S3 over the VPC.

The response travels the same path back to the user. Every layer we covered — nodes, pods, services, load balancers, networking, identity — working together to answer one click.

What EKS costs (and one gotcha)

Pricing is two parts:

  • Control-plane fee: a flat $0.10 per hour, per cluster (≈ $73/month) — the same whether you run 1 pod or 1,000.
  • Compute you use: the nodes (EC2 / Fargate / Auto Mode) running your pods, plus storage and data transfer. This is usually the bigger part of the bill.
The costly gotcha
Keep your cluster on a current Kubernetes version. If it slips into extended support, the control-plane fee jumps — from $0.10 to $0.60 per hour (≈ $73 → ≈ $438 / month). Upgrading on time avoids the surprise entirely.

Should you even use EKS?

Reach for EKS when…
  • Your team already knows Kubernetes
  • You want to stay portable / multi-cloud
  • You run many services or many teams
  • You rely on the K8s tooling ecosystem
  • You're operating at real scale
Maybe skip it when…
  • You have one small, simple app
  • Nobody on the team knows Kubernetes
  • You want the least ops overhead possible
  • You don't need K8s-specific tooling
  • A simpler AWS option (like ECS) would do

EKS is a powerful default for Kubernetes teams — not an automatic yes for every app. Choosing the right tool is the senior move.


Frequently asked questions

Is Amazon EKS the same as Kubernetes?

EKS is Kubernetes — the standard, unmodified project — with AWS running and managing the control plane for you. Your Kubernetes knowledge and YAML manifests work the same on EKS as anywhere else.

Do I need to learn Docker before Kubernetes?

A basic grasp of containers helps a lot, since Kubernetes runs containers. You don't need to be a Docker expert, but understanding what a container is — an app packaged with its environment — makes everything here click faster.

What's the difference between EKS and ECS?

Both run containers on AWS. ECS is AWS's own simpler orchestrator — less to learn, AWS-only. EKS is full Kubernetes — more power and portability, more concepts. If your team knows Kubernetes or values portability, EKS; if you want the simplest path on AWS, ECS is often enough.

What does EKS cost?

A flat $0.10 per hour per cluster for the managed control plane (about $73/month), plus the compute, storage, and data transfer your workloads use. Watch out for the 6× fee increase if your cluster falls into extended support on an old Kubernetes version.

Fargate vs Managed Node Groups vs Auto Mode — which should I pick?

For simplicity, start with EKS Auto Mode or Fargate and let AWS manage the servers. Move to Managed Node Groups when you need precise control over instance types, sizing, or scaling behaviour.

Is Kubernetes hard to learn?

The vocabulary is intimidating at first, but the core is one idea: you declare a desired state and Kubernetes continuously reconciles reality to match it. Once that clicks, Pods, Deployments, Services, and the rest fall into place.

How does a pod talk to AWS services securely on EKS?

Through IAM roles, not stored keys. Using IRSA or EKS Pod Identity, each pod is granted temporary, least-privilege, auto-rotated credentials scoped to exactly what it needs — so there's no long-lived secret to leak.


Quick glossary

Clusterthe whole group of machines Kubernetes manages
Control Planethe brain that makes decisions
Worker Nodea server that runs your pods
Podsmallest unit — a wrapped container
Deploymentkeeps N copies alive; self-heals
Serviceone stable address + load balancing
VPC CNIgives each pod a real VPC IP
IRSA / Pod Identitykeyless IAM permissions for pods

Enjoyed the breakdown?

The next video goes hands-on and spins up a real EKS cluster, step by step. Subscribe so you don't miss it — and tell me in the comments which part to go deeper on: networking, security, or scaling.

▶ Subscribe on YouTube

KubernetesEKSAWSDevOpsContainersCloud NativeK8s

Written by Prashant Sharma · Backend & cloud tutorials at prashantsharmaofficial.com · Course: Udemy · 1:1: Topmate

Comments