OPEN SOURCE · APACHE-2.0 · NO ACCOUNT, NO SERVICE

Rehearse the Kubernetes exams on a real cluster.

One command builds the exam environment on your own machine — a timed sitting, a real Linux desktop, and a score graded on what your cluster actually does. CKAD, CKA and KCNA have full banks today.

$ ./sim doctor # preflight: RAM, disk, cgroups
$ ./sim up # up in seconds
$ xdg-open http://localhost:8080
Docker + ~9GB free RAM (~12GB for the CKA bank) · Windows, macOS, Linux · nothing is built until you pick an exam
KCNA + CKAD + CKA in flight · 3 of 5 banks live
ONE SITTING, END TO END

Pick an exam. Pick how hard. Sit it. Read the verdicts.

01 · Choose the clock. Training is untimed with two-tier hints and solutions on demand. Mastery is half the real clock. Exam is the real thing: full duration, no help, graded when you submit. Chips narrow the draw to the domains you want to drill.

02 · Work like the day itself. The task on the left; a full Linux desktop on the right, terminal already open on the instance the question names. Firefox reaches the allowlisted documentation and nothing else. Clipboard works both ways.

03 · Get a score you can act on. Weighted to the published curriculum, domain breakdown ordered weakest first, and every task carries the checks that scored it — with full solutions to review.

04 · Watch the weak domains close. Every graded attempt is kept on its own volume. The weakest-domains list is built from all of them, and a drill is one click from there. ./sim down then up resumes an attempt mid-sitting.

GRADED ON BEHAVIOUR

When a check fails, it shows you why.

Hands-on answers are graded on what the cluster does — a NetworkPolicy that actually denies (Calico, not kindnet), an Ingress the controller really routes — never on the shape of your YAML.

A failed check puts your cluster state beside the expected one and explains the difference, so the review is where the learning happens.

Every question ships a reference solution; a fresh environment must grade 0 and the references must grade 100%.

✕ FAILED q19 · 10_service — selector is 'app=inventory-api', want app=inventory
YOUR CLUSTER STATE
kind: Service
spec:
  selector:
    app: inventory-api
EXPECTED
kind: Service
spec:
  selector:
    app: inventory
WHY  A Service finds its Pods by label, never by name. While spec.selector matches no Pod, the Service has no endpoints at all.

An honest draw, every attempt

All 167 questions original — no exam dumps. Banks are CC BY-SA 4.0.
  • CKAD
    LIVE
    2h 17 of 44 drawn 66% to pass

    Hands-on, on a two-node Kubernetes 1.35 cluster. Each draw is stratified to the published domain weights and mixed across quick, core and deep tasks — so a sitting is never a wall of long multi-step questions.

  • CKA
    LIVE
    2h 16 of 26 drawn 66% to pass

    Hands-on, on a five-node Kubernetes 1.35 cluster with root ssh to every node — control plane included. Disruptive tasks (scheduler repair, CNI install, kubeadm upgrade, etcd restore) get their own auxiliary clusters, and Gateway API routes are graded through a real controller.

  • KCNA
    LIVE
    90m 65 of 97 drawn 75% to pass

    Multiple-choice in the real exam's shape, weighted across the four KCNA domains on every draw. Every answer explained. No cluster involved, so it starts instantly and works on a phone.

  • COMPLETING THE PATH
    KCSA CKS
    In the catalog with the reason each can't be sat yet. The bank format is documented — write one, and the same gates that check ours check yours.

The whole CLI is nine subcommands

Sitting, grading, resets and progress happen in the browser — the CLI is for the stack itself.
up
stack up; nothing is built until you pick an exam
down
stop; attempt state survives
reset
fresh attempt on the same bank
purge
reclaim disk; attempt history survives — --all alone destroys it
doctor
preflight: Docker, RAM, disk, cgroups, line endings
ssh
shell on an instance, default instance-1
status
docker compose ps
grade
read-only scoreboard, as the environment stands
help
usage; also the default with no argument