All Articles
October 31, 2026
·
4 min read

Kubernetes Isn't Hard — It's Usually Taught Backwards

Most Kubernetes tutorials start with pods, nodes and YAML. Start with the three problems every growing app hits instead, and the components almost explain themselves.

KubernetesDevOpsCloud Native

Kubernetes has a reputation as one of the hardest things in tech. After 25+ years in IT, I don't think the tool is the problem. The problem is the order in which it's taught.

Most tutorials open with a parade of components: pods, nodes, deployments, services, YAML. Only later, if ever, do they explain why any of it exists. Flip that order. Start with the problems, and the components almost explain themselves.

So let's start simple. You have one app, packaged in a container, running on one server. A container is just your application bundled with everything it needs, so it behaves the same wherever it runs. Now let's break it on purpose.

Three problems every growing app hits

Problem 1: the 3 a.m. crash. Your container dies in the middle of the night and nobody is awake. The app stays down for hours. What you really want is something watching it, noticing the failure and restarting it automatically. That's the first job Kubernetes does.

Problem 2: success. Your app gets popular, which is a great problem to have. One copy can no longer handle the traffic, so you want ten, with requests spread evenly between them. And when traffic drops overnight, you want to scale back down so you don't pay for idle copies. That's the second job.

Problem 3: too many machines. Running many replicas plus databases and supporting services means you no longer have one server. You have a cluster. You don't want to decide by hand which container lands on which machine. You want to say: "Keep ten healthy copies running somewhere, spread them out, and don't put them all on one box." Then let something else figure out the placement. That's the third job.

Now the scary words make sense

With those three problems in mind, the vocabulary stops being intimidating:

  • Pod: the smallest unit Kubernetes manages. It wraps your container, usually just one.
  • Node: a server (physical or virtual) where pods run.
  • Control plane: the brain of the cluster. You talk to it; it manages the pods for you.
  • Desired state: what you tell the control plane you want, such as "ten copies of this app, somewhere on these machines."

Notice what's missing: you never manage individual pods by hand. You describe the outcome and let Kubernetes handle the details.

The one idea at the heart of Kubernetes

If you remember only one thing, make it this: Kubernetes constantly compares what you asked for with what is actually running, and fixes any difference.

  • You asked for 10 pods. One died, so there are 9. Kubernetes starts a new one.
  • You asked for 10 pods. Somehow there are 12. Kubernetes removes two.

This check-and-correct cycle never stops. The technical name is reconciliation, but the concept is simple. You describe the world you want, and Kubernetes keeps working to make reality match it.

As a Python developer, I find a familiar parallel here. It's the difference between imperative code ("do step 1, then step 2") and declarative code ("this is the result I want"). Kubernetes is declarative infrastructure. Deployments, Services, ConfigMaps and all that YAML are simply different ways of stating your desired state.

The takeaway

Strip away the jargon and Kubernetes is a manager. Its job is to keep the right number of healthy copies of your application running across many machines, so you never have to babysit servers at 3 a.m.

You declare what you want. Kubernetes handles the rest.

If Kubernetes has felt out of reach, try learning it problem-first. Every new component you meet is just an answer to a question you've already asked.


How did Kubernetes finally click for you? I'd love to hear it.

Inspired by Nana Janashia's video "Kubernetes Simply Explained" on TechWorld with Nana. If you're learning DevOps, her channel is one of the best places to start.

EL

Eduardo Lucas

Senior Python/Django Developer · Data Architect · 25+ years in enterprise IT