Skip to content

Volume ITechnology

14.5 — Explaining It to Anyone ​

Someone asks you, over lunch, "so what actually is Kubernetes?" You have about thirty seconds before their attention moves on. Later the same week, a new developer on your team needs five minutes of real understanding before their first deploy. And one afternoon, your manager asks whether the team should move everything onto a cluster, and you are standing at a whiteboard.

Those are three different explanations, and this page gives you all three, along with the analogies that work, the exact point where each analogy breaks, and the misunderstandings you will hear most often and how to correct them in a sentence. Everything here rests on the chapters before it, so each claim points back to the chapter where it was shown properly. If you can give these explanations in your own words, you understand this Part.

1. The thirty-second version ​

Say it in three short steps, one idea each.

"Programs need the right versions of a lot of other software to run, and two programs on one computer often need different versions. A container packages a program together with exactly the software it needs, and the computer's operating system keeps each package walled off from the others, so they can share one machine without fighting."

"Docker is the tool that made building and sharing those packages easy."

"Kubernetes runs those packages across many computers at once. You tell it what you want, say three copies of the checkout service, and it keeps that true on its own, even when a computer fails in the middle of the night."

Why this order works. The first sentence names a problem everyone has felt, even a non-programmer: something that worked on one computer does not work on another. The second gives one name to one idea. The third introduces the one idea that makes Kubernetes different from everything before it, which is that you describe the result, not the steps (Chapter 14.3.1).

What to leave out at this length: namespaces, cgroups, pods, YAML, and the word "orchestration". Each one is a word the listener has to ask about, and every question uses up your thirty seconds.

2. The five-minute version ​

Five minutes is enough for the reasoning, not just the conclusion. Tell it as a story with five beats, each one fixing the previous one's problem.

Beat 1: one machine per program. For decades, the safe way to run two programs was to buy two servers, because programs sharing a machine share its libraries, and an update for one breaks the other. Most of those servers sat 90 percent idle (Chapter 14.1.1).

Beat 2: virtual machines. A hypervisor splits one physical server into several pretend ones, each with its own whole operating system. Utilisation went up enormously, and the cloud is built on this. But each VM is a whole computer: gigabytes of operating system, a minute to start, its own patching (Chapter 14.1.2).

Beat 3: containers. Notice that the programs never needed separate operating systems. They needed separate files (their own libraries) and a guarantee of not interfering. Linux can give a single process its own private view of files, processes and network, and a fixed budget of memory and processor, while every process still shares the one real kernel. That is a container: a normal program with walls around what it can see and what it can use. It starts in milliseconds and weighs megabytes (Chapter 14.1.3). You can build one by hand in about twenty commands (Chapter 14.1.4).

Beat 4: Docker. The walls existed in Linux for years before Docker. What Docker added in 2013 was the package: an image, built from a short recipe called a Dockerfile, stored in a registry, and run with one command. The image that ran on a laptop is byte for byte the image that runs in production (Chapters 14.2.1 to 14.2.3).

Beat 5: Kubernetes. Docker runs containers on one machine. A real service needs many machines, and needs something to decide where each container goes, restart it when it dies, move it when a machine fails, and swap in new versions without downtime. Kubernetes does that, and its central idea is desired state: you write down "three copies of this image, reachable under this name", and a set of control loops keep comparing what is running against what you wrote, and fix any difference, forever (Chapters 14.3.1 and 14.3.3).

End with the one sentence that ties it together: "Virtual machines share the hardware, containers share the operating system, and Kubernetes shares a fleet of machines among many containers and keeps them the way you described."

3. The whiteboard: four drawings, in this order ​

At a whiteboard you can afford detail, but only if the drawings build on each other. Draw these four, in order, and say the sentence under each while you draw.

Drawing 1: two stacks side by side ​

Draw hardware at the bottom of two columns. On the left, a hypervisor, then three boxes each labelled "OS" with an app on top. On the right, one box labelled "one shared kernel", then three apps directly on it, each with a thin "libs" layer. This is Figure 1 of Chapter 14.1.1.

"A VM brings its own operating system. A container brings only its own files and borrows the kernel. That one difference is why containers start in milliseconds and why they are a weaker wall."

The follow-up question you will get is "so are containers secure?" Answer: they are a real wall but a thinner one, because every container on a machine talks to the same kernel; that is why cloud providers separate customers with VMs and let each customer separate their own services with containers (Chapter 14.1.2, section 10).

Drawing 2: the image as a stack of layers ​

Draw four stacked rectangles: "base OS files", "language runtime", "dependencies", "your code". Then a thin one on top: "this container's changes".

"An image is read-only layers. Every container from it shares those layers and gets one thin writable layer of its own. Change your code and only the top layer is rebuilt and re-downloaded."

If they ask why deleting a big file in a later step does not shrink the image, point at the layers: the file is still in the layer below; a later layer can only hide it (Chapter 14.1.4).

Drawing 3: the cluster ​

Draw one box labelled "control plane" containing "API server" and "etcd". Below it, three boxes labelled "node", each with a "kubelet" and a few small squares for pods. Draw arrows only between the API server and each kubelet, and between the API server and etcd.

"Every machine runs an agent called the kubelet. The control plane holds the desired state in one database. Nothing talks to anything except through the API server."

This drawing answers "what happens if the control plane goes down?": running containers keep running, because the kubelets already know what to run; what stops is change, meaning new deploys and automatic repairs (Chapter 14.3.3).

Drawing 4: the loop ​

This is the drawing that matters most, and it is a circle with three labelled points. The figure below is what to draw.

desiredreplicas: 3what you wroteactual2 runningwhat is true now① compare3 wanted, 2 seen② actcreate one pod③ repeat, forever,for every object
Figure 1 — The loop at the heart of Kubernetes. Every controller in the cluster runs this same circle for its own kind of object: read what is wanted, read what is true, close the gap, and go round again.

"Every part of Kubernetes is this loop. It does not run a script once; it keeps checking, so a deleted pod comes back and a dead machine's work moves somewhere else. You do not tell it what to do. You tell it what should be."

Then show it working, if there is a laptop nearby: delete a pod and watch a new one appear, exactly as in Chapter 14.3.2. Nothing persuades a room like a pod coming back by itself.

4. Analogies that work, and exactly where each breaks ​

A good analogy is a loan: it buys understanding quickly, and you have to pay it back by saying where it stops being true. Always say where it breaks, or the listener will reason from the analogy past the point where it holds, and arrive at something wrong.

AnalogyGets rightBreaks at
Shipping containerStandard box, any shipReal boxes don't share an engine
Apartments vs housesShared foundations, private roomsWalls are thinner than they look
ThermostatDesired state, constant correctionIt controls one thing; Kubernetes, thousands
Recipe vs mealImage vs running containerYou can't run two meals from one plate
Orchestra conductorMany parts, one coordinatorA conductor commands; Kubernetes corrects

The shipping container is where the name came from, and it explains standardisation well: before standard containers, every cargo was packed differently; afterwards, any crane and any ship handled any box. Images are the same: any machine with a container runtime runs any image. Where it breaks: real shipping containers are fully separate objects. Software containers on one machine all share one kernel, which is the most important fact about them. Say so.

Apartments and houses. VMs are detached houses, each with its own foundations, plumbing and roof. Containers are apartments in one building: private rooms and locks, shared foundations and pipes. It explains density and cost perfectly. Where it breaks: people imagine apartment walls as solid. A kernel vulnerability is a crack in the shared foundation that every apartment sits on, which is why untrusted code still gets a house of its own (Chapter 14.1.2).

The thermostat is the best single analogy for Kubernetes. You set 21 degrees; you do not tell the heater when to turn on. It measures, compares and corrects, and if someone opens a window, it corrects again. That is the loop in Figure 1. Where it breaks: a thermostat controls one number. Kubernetes runs thousands of these loops at once, for thousands of objects, and they interact: the autoscaler changes the desired replica count that the ReplicaSet controller is trying to reach.

The recipe and the meal. An image is a recipe card; a container is a meal cooked from it. Many meals from one card, and the card never changes. Where it breaks: the image is not instructions to follow; it is the finished ingredients, already measured. The recipe is the Dockerfile.

The orchestra conductor is the one most people reach for, because of the word "orchestration", and it is the misleading one. A conductor gives continuous instructions and the orchestra follows them in real time. Kubernetes gives no instructions at all. It describes an end state and lets independent components each work towards it, with no central script and no running order. Use the thermostat instead, and if someone says "conductor", gently swap it.

5. Ten things people believe that are not true ​

You will hear every one of these, often from experienced engineers. Each correction is one or two sentences, so you can give it without derailing a conversation.

1. "Containers are lightweight virtual machines." A VM has its own kernel; a container is a process sharing the host's. That is not a difference of weight; it is a different kind of thing, and it decides the security model (Chapter 14.1.3).

2. "Docker is containers." Docker is one set of tools. The image format and runtime behaviour are open standards from the Open Container Initiative, and Kubernetes clusters run containers with containerd or CRI-O, with no Docker present at all (Chapter 14.2.1).

3. "Kubernetes dropped support for Docker, so Docker images don't work any more." In 2022, version 1.24 removed a piece of code that let Kubernetes talk to the Docker engine. Images built with Docker are standard images, and they run on every cluster exactly as before (Chapter 14.2.1).

4. "Kubernetes makes my application scalable." Kubernetes can run more copies. Whether more copies help depends on the application: if it keeps state in memory, or every copy writes to one database that is already the bottleneck, ten copies are no faster than one (Chapter 14.3.7).

5. "A Kubernetes Secret is encrypted." It is base64-encoded, which anyone can reverse. It is protected by who is allowed to read it, and by encryption of the stored data on disk (Chapter 14.4.3).

6. "Containers are secure by default." They start with a sensible set of restrictions, but run as root unless told otherwise, and one --privileged flag removes most of the wall (Chapters 14.1.3 and 14.2.4).

7. "Delete the pod to stop it." Deleting a pod managed by a Deployment means "replace it". To stop it, change the desired state: scale to zero, or delete the Deployment (Chapter 14.3.2).

8. "A pod is a container." A pod is one or more containers that always run together on one machine, sharing a network address. Usually one, sometimes with a helper beside it (Chapter 14.3.5).

9. "Use the latest tag so you always get the newest version." latest is just a name that can point at different images over time, so two machines can run different code under the same name. Production uses fixed tags or, better, digests (Chapters 14.2.2 and 14.4.3).

10. "Every team should be on Kubernetes." A cluster is a platform someone has to run, upgrade and secure. A small team with a few services is often far better served by a managed container service that runs containers without exposing a cluster at all (Chapters 14.3.1 and 14.4.2).

6. The hard questions, and honest answers ​

These are the questions that come after the explanation. Honest answers build more trust than enthusiastic ones.

"Why not just use virtual machines?" You still do, underneath: every cloud Kubernetes node is a VM. Containers add a faster, smaller unit of packaging on top, so you can run many services per machine, start them in milliseconds and ship exactly the tested artefact. Use VMs for the boundary between customers or between very different trust levels; use containers inside that boundary.

"Do we need Kubernetes?" Ask three questions. How many services do we run? Do they need to scale and heal on their own? Do we have, or want, people who will own a platform? If the answers are "a few", "not really" and "no", a managed service that runs containers for you is the better fit, and Chapter 14.4.2 ends by asking this same question of a real system. If you have dozens of services across several teams, the consistency Kubernetes gives usually pays for itself.

"What does it cost?" The machines are the visible cost. The invisible one is people: upgrades three times a year, security patching, networking and identity setup, and the on-call knowledge to debug it (Chapter 14.3.9). Managed services like AKS remove the control-plane work and leave the rest.

"What's the difference between Docker and Kubernetes?" Docker builds images and runs containers on one machine. Kubernetes runs containers across many machines and keeps them the way you described. Most teams use Docker, or a compatible builder, to build, and Kubernetes to run.

"Is it safe for our sensitive data?" It can be, with work. Namespaces, network policies, RBAC, non-root containers, admission policies and a secrets vault are each a layer you have to switch on deliberately (Chapter 14.3.8). A default cluster with default settings is not where sensitive data should go.

7. Same idea, four listeners ​

To a manager: lead with outcomes. Releases become routine instead of events, because the same tested package goes everywhere and a bad release rolls back in seconds. Machines are used far more fully, so the bill shrinks. Recovery from a failed server is automatic. Then the honest cost: it needs people who know it.

To a new developer: lead with their day. "You write a Dockerfile next to your code, the pipeline builds it once, and the same image runs on your laptop, in dev, in QA and in production. You will look at three things when something goes wrong: kubectl get pods, kubectl describe pod, and kubectl logs --previous." Then send them to Chapter 14.3.2 to do it once by hand.

To an operations engineer: lead with the mechanism, since that is what they trust. A container is a process with namespaces, a cgroup and an OverlayFS root, and you can see it in ps on the node. Kubernetes is a set of control loops around one database, so the cluster's state is always inspectable and every change goes through one API.

To a friend who does not work in software: use the apartment building and the thermostat, and one concrete example: "When you buy something online and the site stays up during a huge sale, there is a good chance that some computer kept noticing it needed more copies of the checkout program, and started them on its own."

8. You understand this Part if you can explain… ​

Try each out loud, in your own words, without looking. If one stalls, the chapter in brackets is where to go back.

  • Why a library update can break an application, and why a container stops that from happening (14.1.1).
  • Why POPF made x86 hard to virtualise, and what VT-x changed (14.1.2).
  • What a container is, as the kernel sees it, and why "the kernel has no container object" (14.1.3).
  • What a whiteout is, and why deleting a file in a Dockerfile never shrinks an image (14.1.4).
  • What happens, program by program, when you type docker run (14.2.1).
  • The difference between a tag and a digest, and why production should use the second (14.2.2).
  • Why a container takes exactly 30 seconds to stop, and the two fixes (14.2.3).
  • Why bind-mounted node_modules is slow on a Mac, and what to do about it (14.2.6).
  • What actually happened when kubectl apply returned, and what happened afterwards (14.3.3).
  • Why deleting a pod brings it back, and why a broken rollout does not take a service down (14.3.2).
  • How a Service turns one address into many pods (14.3.6).
  • Why CPU limits make things slow and memory limits make things die (14.3.7).
  • How to tell OOMKilled from Evicted, and what each tells you to fix (14.3.9).
  • Why the same digest should move from dev to QA to production (14.4.3).

What the interviewer will push on ​

"Explain Kubernetes to someone non-technical." Interviewers ask this to see whether you can simplify without becoming wrong. The thermostat answer wins: you set the result you want, it keeps measuring and correcting. Add one concrete example. The weak answer lists components; the risky answer says "it's like a conductor", which describes a system that gives orders, the opposite of how Kubernetes works.

"What is the difference between a container and a VM, in one sentence?" "A VM virtualises the hardware and carries its own kernel; a container is a process that shares the host's kernel and is walled off by it." Then volunteer the consequence for security without being asked.

"Where does your favourite analogy break?" A good interviewer asks this to see whether you know the edges of your own understanding. Have one ready for each analogy in section 4.

One thing to volunteer: say that the hardest part of Kubernetes to learn is not any component; it is the shift from giving instructions to describing results. Once someone has that, every component is just one more loop. That observation shows you have taught it, not only used it.

Next: Part 15 turns from systems to the craft around them, starting with 15.1.1, what Git actually stores, and why a branch costs 41 bytes.