Skip to content
BiliMind
Roadmap

How to learn Kubernetes

This path assumes you want to understand why a Deployment rolls back, not just which command to type. It gets you from zero to debugging a broken cluster by reading events, logs, and controller behaviour — not by guessing. The order is deliberate: control loop first, kubectl second.

Hours

70-90 hours

Calendar

about 14 weeks at 6 hours a week

Stages

6

Start from

Working knowledge of containers — you can build one and run it locally with Docker or Podman. You do not need to know etcd internals, Go, or any cloud provider first; that belief keeps people stuck on tutorials for months.

Why the usual order fails

Most Kubernetes courses start with kubectl run nginx, then a tour of YAML fields, then a cloud managed cluster. By week three you can deploy a stateless app and still cannot explain why it restarted, why a Service stopped routing, or what kubelet was doing for the last twenty minutes. The reason is structural: kubectl is a thin client over an API server, and the API server is a front for a set of control loops. If you learn commands before loops, every failure looks like a syntax problem, and every fix is a guess.

This path inverts that. Week one is the control loop: what a controller is, what reconciliation means, and how to watch etcd changes with a plain HTTP client. Week one ends with you writing a five-line shell loop that polls the API and corrects drift — a controller in miniature. Most plans have you copying Deployment YAML by then. From there, kubectl becomes a read tool for inspecting the loops you already understand, not a memorisation exercise.

The path, in the order it has to be walked.

Each stage assumes the one above it and nothing below it. The check at the foot of each is the point — you are meant to fail it, go back, and try again before moving on.

  1. The control loop

    weeks 1-2

    You learn what Kubernetes actually is: a distributed system of controllers reconciling desired state with actual state. This sits first because every later stage — networking, storage, scheduling — is just a specialist controller, and without the loop those look like magic.

    • Desired state vs actual state
    • The reconciliation loop
    • etcd as the source of truth
    • The API server as a watchable store
    • Controllers vs operators
    • The informer pattern
    • Writing a shell-loop controller against the API

    You can now: You can point a curl request at the API server, watch a resource change in etcd, and explain which component will react and in what order.

  2. Pods, nodes, and kubelet

    weeks 3-4

    Now you meet the first real controllers: the scheduler and kubelet. This stage is here, not earlier, because you need the loop to understand why a Pod's status field is not a command — it is a report, updated by kubelet, watched by other controllers.

    • Pod lifecycle phases
    • Container statuses and restart policy
    • The scheduler's filtering and scoring
    • kubelet's sync loop
    • Liveness, readiness, and startup probes
    • Static pods
    • Reading kubectl describe pod as a status report, not a log

    You can now: You can take a Pending pod, identify whether the scheduler or kubelet is responsible, and fix the cause without deleting the pod.

  3. Deployments and ReplicaSets

    weeks 5-6

    You learn how higher-level controllers are built from lower ones. A Deployment does not run pods; it creates a ReplicaSet, which creates Pods, each owned by the one above. This sits after kubelet because you need to see the ownership chain before the abstraction makes sense.

    • ReplicaSet as a pod-count controller
    • Deployment as a ReplicaSet version controller
    • Rolling update mechanics
    • Rollback and revision history
    • Owner references and garbage collection
    • Pod disruption budgets
    • Why deleting a pod is not a fix

    You can now: You can trigger a failed rollout, then trace the exact ReplicaSet and Pod that caused it and explain why kubectl rollout undo worked or did not.

  4. Services and networking

    weeks 7-9

    Networking is where most people quit, because they learn it as YAML before they learn it as a controller. Here you meet kube-proxy, CoreDNS, and the endpoints controller — all reconciling the same Service object. This stage is longer because the failure modes are genuinely harder.

    • ClusterIP, NodePort, LoadBalancer
    • The endpoints controller and EndpointSlices
    • kube-proxy modes: iptables, IPVS, nftables
    • CoreDNS and service discovery
    • NetworkPolicy and CNI plugins
    • Ingress and the ingress controller pattern
    • Debugging with tcpdump inside a pod

    You can now: You can take a Service that is not routing traffic and, within an hour, determine whether the fault is in endpoints, kube-proxy, DNS, or the CNI plugin.

  5. Storage and StatefulSets

    weeks 10-11

    State is where the control loop gets tested hardest, because storage has real-world latency and failure modes that pods do not. This stage is here because you need Services and Deployments solid before adding PersistentVolumes and ordered pod identity.

    • PersistentVolumes and PersistentVolumeClaims
    • StorageClasses and dynamic provisioning
    • The attach-detach controller
    • StatefulSets and stable pod identity
    • Headless Services
    • Volume snapshots and restore
    • Why a database in Kubernetes is a decision, not a default

    You can now: You can provision a StatefulSet with persistent storage, kill a node, and verify the pod comes back on another node with its data intact.

  6. Operators, RBAC, and debugging

    weeks 12-14

    The final stage is where you stop being a user and start being an operator. You write a real controller, not a shell loop, and you learn to debug a cluster by reading events, audit logs, and controller logs in the right order. This is last because it assumes everything before it.

    • Custom Resource Definitions
    • Writing a controller with client-go or kubebuilder
    • RBAC: Roles, RoleBindings, ServiceAccounts
    • Events as a debugging signal
    • Audit logs and what they record
    • Metrics-server and resource requests/limits
    • Debugging a CrashLoopBackOff systematically

    You can now: You can deploy a custom controller you wrote, grant it least-privilege RBAC, and debug a failure in it using events and logs alone.

The hours are fixed. The calendar is yours.

The same path at three speeds, and what actually goes wrong at each.

3 hours a week

You will finish in about 26 weeks. The control loop stage is fine at this pace, but networking and storage will hurt: by the time you return each week, the previous week's mental model has decayed and you spend the first hour re-reading. Expect to repeat weeks 7-9 at least once.

8 hours a week

You will finish in about 10 weeks. This is the sustainable pace: enough time to hold the control loop in your head between sessions, and enough slack to actually break things and fix them rather than just reading. Networking will still take two solid weeks.

20 hours a week

You will finish in about 4 weeks. You will learn the commands quickly, but the debugging instincts will not have time to form. You will pass a quiz and still freeze when a pod is CrashLooping. This pace works only if you already operate Linux systems daily.

What goes wrong

Four ways people lose a year on this.

Each of these is appealing for a real reason, which is why they are common. What they cost is the part nobody mentions.

  • Learning kubectl before the control loop

    People memorise fifty kubectl commands because tutorials reward visible progress: a pod appears, a service responds. But kubectl is a thin client. When something breaks, you have no model of what is happening behind the command, so every fix is a guess. You end up deleting and recreating resources until something works, and you cannot explain why it worked.

  • Treating YAML as the skill

    Courses spend hours on YAML indentation and field names, as if writing manifests were the hard part. It is not. The hard part is knowing what each field tells a controller to do, and what the controller will do when reality diverges. People who learn YAML first can write a Deployment from memory and still cannot debug a failed rollout.

  • Skipping self-managed clusters

    Managed Kubernetes hides etcd, the API server, kubelet, and the scheduler behind a web console. That is fine for production, but terrible for learning. People who only use managed clusters never see the control plane fail, never watch a node go NotReady, and never learn what kubelet actually does. Their debugging skills are limited to what the cloud provider's dashboard exposes.

  • Learning Helm before understanding what it wraps

    Helm is a templating and release tool over Kubernetes objects. Learning it early means you deploy charts without knowing what resources they create or why a values.yaml change broke a Service. When a chart fails, you have two layers to debug instead of one, and you lack the vocabulary to read the error. Helm is a week-15 topic, not a week-3 one.

How to know it worked.

Not a syllabus you tick off — six things to attempt. If one of them is still hard, the stage it belongs to is the one to go back to.

  1. Explain what happens between kubectl apply and a running pod
  2. Write a shell loop that watches the API and corrects a drift
  3. Make a pod Pending, then find the scheduler's decision in events
  4. Break a Service's endpoints and fix it without recreating the Service
  5. Cause a Deployment rollout to fail and roll it back by revision number
  6. Provision a StatefulSet, kill its node, and verify data survives
Questions

Questions about learning Kubernetes.

The five we hear most. The intro film answers most of them in a minute and a half.

how long does it take to learn kubernetes

About 70-90 hours of focused work, or 14 weeks at 6 hours a week, gets you to genuine debugging competence. That is enough to run a small production cluster and fix most failures. You can demo a deployment in 10 hours, but that is not the same thing.

is kubernetes hard to learn

The concepts are not hard, but there are many of them and they interact. The difficulty is that most tutorials teach commands before the control loop, so nothing coheres. If you learn the loop first, the rest is mostly variations on one idea.

do i need to learn docker before kubernetes

You need to understand containers — images, layers, ports, volumes — but you do not need deep Docker mastery. Knowing how to build and run a container locally is enough. What you do not need is Docker Swarm or docker-compose; those do not transfer.

is kubernetes dying

No. Kubernetes is the default container orchestration layer across every major cloud and most large on-premises deployments. The question is not whether it survives, but whether you will ever need to touch it directly, and the answer for most backend engineers is yes.

can i learn kubernetes without a cloud account

Yes, and you should. A local cluster with kind or minikube on your laptop is enough for the control loop, networking, storage, and operator stages. You only need a cloud account if you want to learn cloud-specific load balancers and storage classes, which is a small part of the whole.

A path is not a course.

This is the shape of Kubernetes, not the teaching of it. Hand the same path to BiliMind and it writes the lessons onto it — in the form each one calls for, with practice that gets marked and a schedule that bends when your week does. Mapping a course is free and unlimited.

This roadmap was drafted on 18 September 2026 by the same engine that builds BiliMind courses, and reviewed before publishing. Hours are honest estimates for working competence, not for a demo — treat them as a starting point and adjust them against your own first fortnight.

The intro · 1:25