Known-good state
Record readiness, endpoint, rollout, and user-path evidence before injecting anything. Without a baseline, every later observation is ambiguous.
A good lab does not ask you to copy a manifest and celebrate a green Pod. It gives you a known-good system, introduces one controlled failure, withholds the answer long enough for you to reason, and requires objective recovery proof.
Many tutorials optimize for completion. They provide the command, the expected output, and the correction in one continuous sequence. That is useful when learning object syntax, but it removes the uncertainty that defines real operations work. In production, the ticket rarely says “the Service selector is wrong.” It says “the application is unavailable,” “the rollout is stuck,” or “the Pods are Running but customers still receive errors.”
A production-style lab must therefore separate symptom from cause. The learner should receive a user-visible symptom, partial telemetry, and a time boundary. The failure should remain small enough to diagnose, but realistic enough that several hypotheses are initially plausible.
Record readiness, endpoint, rollout, and user-path evidence before injecting anything. Without a baseline, every later observation is ambiguous.
Introduce one root cause and at most one contributing factor. Randomly breaking five objects teaches frustration, not diagnosis.
Hints should move from scope to object to field. They should never reveal the repair before the learner has gathered evidence.
“The command succeeded” is not proof. Validate controller state, Pod readiness, EndpointSlices, route conditions, and the user path.
Start broad enough to establish scope, then move toward the object most likely to explain the symptom. The exact commands vary, but the reasoning sequence should remain stable.
kubectl config current-context
kubectl get events -A --sort-by=.lastTimestamp
kubectl get pods -A -o wide
kubectl describe pod <pod> -n <namespace>
kubectl logs <pod> -n <namespace> --previous
kubectl get service,endpointslice -n <namespace>
kubectl get deployment,replicaset -n <namespace>The command list is not a ritual. Each command must answer a question. Events answer what the control plane recently rejected or retried. Describe connects an object to conditions and events. Logs explain application behavior. EndpointSlices prove whether a Service currently has ready backends. Controller objects reveal desired state, rollout history, and ownership.
Examples include CrashLoopBackOff, an incorrect command, missing Secret keys, OOMKilled, and a readiness probe that never succeeds. Require learners to distinguish container creation, process startup, liveness, readiness, and application correctness.
Use selector mismatches, wrong target ports, missing EndpointSlices, DNS configuration problems, and Gateway API backend-reference errors. The learner should trace the path from client to DNS to Service to EndpointSlice to Pod.
Use impossible node selectors, untolerated taints, insufficient resources, topology constraints, and PodDisruptionBudgets. The learner must read scheduler events rather than changing constraints blindly.
Use RBAC denials, Pod Security Admission rejections, and over-restrictive NetworkPolicies. The repair should preserve least privilege rather than weakening the cluster until the error disappears.
On a disposable self-managed cluster, stop the scheduler or controller-manager, validate an etcd snapshot, and restore the component. These labs teach the difference between API persistence, scheduling, and controller reconciliation.
Do not grade only against one expected command sequence. Two engineers may take different valid routes. Grade the quality of evidence, the safety of the intervention, the strength of recovery proof, and the clarity of the root-cause explanation.
Store the known-good manifests, the failure injection, the evidence note, and the repaired state in Git. Include a short incident record that explains symptom, scope, evidence, root cause, intervention, validation, and prevention. This demonstrates far more professional skill than a screenshot of `kubectl get pods`.
Kubernetes Operator's Workbook, Second Edition turns these ideas into guided labs, 24 production incidents, control-plane recovery, and interview simulations.
Explore the workbook