Lesson 1 of 6

Why Orchestration?

Docker made one container on one machine easy. Now picture production: fifteen services, three replicas each, spread across a dozen machines. At 3 a.m. a machine dies — who restarts its containers somewhere else? Traffic triples — who starts more replicas? You ship a new version — who swaps forty-five containers without downtime? Doing that by hand isn't a job, it's a pager nightmare. Kubernetes (K8s) is the system that does it for you.

💡 The Bottom Line

Kubernetes is a control loop over a cluster of machines: you declare the state you want ("three replicas of this image, reachable on port 80"), and Kubernetes works continuously to make reality match — restarting what dies, rescheduling around failed machines, and scaling on demand. You manage the description, not the containers.

Imperative vs declarative: the core idea

With Docker you give commands: start this, stop that. Kubernetes flips the model — you hand it a description (a YAML manifest) of the desired state, and its controllers reconcile endlessly:

This "reconciliation loop" is the single concept the rest of Kubernetes hangs off — every object type you'll meet in this track is just a different kind of desired state.

What a cluster looks like

🙋 There Are No Dumb Questions

Q: Does Kubernetes replace Docker?
A: No — they're different layers. You still build container images exactly as before (Dockerfile, registry); Kubernetes is what runs those images across a cluster. Under the hood Kubernetes uses a container runtime (containerd, which is Docker's own core) rather than the full Docker Engine, but from your point of view nothing changes: build and push an image, then hand Kubernetes the image name.

⚠️ Watch Out

Kubernetes is not a default choice — it's an answer to problems of scale. One app on one server is better served by Docker Compose and a reverse proxy. Reach for Kubernetes when you actually have the problems it solves: many services, many machines, zero-downtime deploys, autoscaling. Learning it is valuable either way; deploying it everywhere is not.

🔧 Try It Yourself

You don't need a cloud account — run a tiny cluster on your laptop. Install one of minikube, kind, or enable Kubernetes in Docker Desktop, then:

kubectl get nodes
kubectl get pods -A

The first shows your cluster's machines (just one, locally); the second shows the system pods Kubernetes runs for itself. If both answer, you have a working cluster for the rest of this track.

✅ Quick Check

What does "declarative desired state" mean in Kubernetes?


Next up: the smallest thing Kubernetes manages — the pod — and why it's a wrapper around your container rather than the container itself.

← Back to
Next →