Docker & ContainersXXXVII Β· Orchestration TransitionThe orchestrators
Kubernetes at a glance β the object model and the operational bill
What you'll learn
- Map the Kubernetes object model onto concepts you already have from Compose
- Name the control plane and node components and what each one fails at
- Explain why Docker Engine is not the runtime on a modern Kubernetes node
- Estimate the recurring operational cost before committing to it
Prerequisites
Verified against Docker Engine 29.x Β· Docker Engine 28.x Β· Docker Compose 2.x Β· containerd 2.x Β· runc 1.2.x Β· BuildKit 0.20+ Β· Linux kernel 5.15+ Β· Ubuntu 24.04 LTS Β· Debian 12 (Bookworm) Β· 2026-08-11
Kubernetes is the default answer to βwe need an orchestratorβ, and it is frequently the right one. It is also a much larger system than anything else in this course, and the most common way to be disappointed by it is to adopt it without costing the parts that are not the scheduler.
This is a transition lesson, not a Kubernetes course. The goal is that you can read a manifest, name the moving parts, and put a realistic number on what running it costs.
The object model, from what you already know
The pattern to notice: almost every Kubernetes object is declarative desired state read by a controller. An Ingress object is not a proxy; it is a request that some ingress controller you installed configure a proxy. A PersistentVolumeClaim is not storage; it is a request that a CSI driver you installed provision some. Objects without controllers do nothing, silently.
apiVersion: apps/v1
kind: Deployment
metadata:
name: web
namespace: myapp
spec:
replicas: 4
selector:
matchLabels:
app: web
template:
metadata:
labels:
app: web
spec:
containers:
- name: web
image: registry.example.com/myorg/myapp:1.4.2
ports:
- containerPort: 8080
resources:
requests:
cpu: 250m
memory: 256Mi
limits:
memory: 512Mi
readinessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 10
terminationGracePeriodSeconds: 60
requests and limits are the same distinction Swarm makes with
reservations and limits: the scheduler places on requests, the kernel enforces
limits. terminationGracePeriodSeconds is the stop timeout from the lifecycle
part of this course, spelled differently.
What the control plane is made of
| Component | Runs on | Fails as |
|---|---|---|
kube-apiserver | Control plane | Nothing can be read or changed; running Pods keep running |
etcd | Control plane | The same, plus the desired state itself is at risk |
kube-scheduler | Control plane | New Pods stay Pending forever; existing ones are unaffected |
kube-controller-manager | Control plane | No reconciliation: failed Pods are not replaced, Deployments do not roll |
kubelet | Every node | That nodeβs containers are unmanaged; the node goes NotReady after a timeout |
kube-proxy (or an eBPF replacement) | Every node | Service VIPs stop working on that node |
| CNI plugin | Every node | New Pods fail to get an address and stay in ContainerCreating |
The pattern is the same as Swarmβs quorum loss, generalised: the data plane survives control plane failure, so outages are partial and quiet. A cluster whose scheduler has been down for six hours looks perfectly healthy until something needs rescheduling.
Docker is not the runtime
The recurring bill
This is the part usually left out of the evaluation, and it is the part that decides whether the adoption succeeds.
When Kubernetes is the right answer
It is, genuinely and often. The honest version of the criteria:
- You have enough workloads that bin-packing matters. Below roughly a dozen services, the scheduler is solving a problem you do not have.
- You want the ecosystem specifically. Operators for databases, cert-manager, Argo CD, service meshes, autoscalers. This is Kubernetesβ strongest argument by a wide margin, and none of it exists elsewhere.
- More than one team deploys to the same infrastructure. Namespaces, RBAC, resource quotas and network policies are a real multi-tenancy story.
- Someone will own the platform. Not as a side project. The most common failure is a cluster built by one enthusiast who then changes team.
- Your workloads already tolerate being killed and moved. If they do not, fix that first β it is worth doing regardless of what schedules them.
If most of those are false, a smaller tool will serve you better, and you can always move later. The migration from Compose or Swarm to Kubernetes is tedious; the migration from a Kubernetes cluster nobody can operate is an outage.
Knowledge check
Knowledge check Β· 4 questions
Q1. What is the smallest unit Kubernetes schedules?
Q2. The kube-scheduler has been down for six hours. Which statements are true? Select all that apply.
Q3. Images built with `docker build` must be rebuilt with a different tool before they can run on a modern Kubernetes node.
Q4. Which cost does a managed control plane (EKS, GKE, AKS) NOT remove?
Passing score: 75%. Answers are checked in this browser.