Drills
A drill is one exercise, timed against its target and graded by the real state of your cluster or VM.
Starting one
kubefit drill cka # the CKA exercise you most need
kubefit drill cka-03-broken-service # a specific exercise by id
kubefit drill lfcs # LFCS runs in the Lima VM
A bare track name picks by weakness, using the same scheduler as kubefit next: never-drilled exercises in heavy domains first, then whatever is most due. Exercise ids are listed on each track's guide and in kubefit report <track>.
kubefit makes sure the right cluster exists for the track (see Tracks for cluster profiles), writes the exercise files from the pack, runs the exercise's setup, captures a grading baseline, prints the task and starts the clock.
Inside the drill shell
The shell is your own shell (zsh or bash) with your usual configuration, opened in the exercise directory, with a status line before every prompt showing the elapsed time.
| Command | What it does |
|---|---|
kubefit task | Reprint the task, including the documentation links allowed in the exam |
kubefit grade | Check your work now. Each one counts as an attempt |
kubefit hint | Reveal the next section of the walkthrough. Recorded on the rep |
kubefit solution | Print the whole walkthrough. Recorded on the rep |
kubefit clock | Print the elapsed time |
kubefit note <text> | Save a note to this track's notebook, tied to this exercise |
kubefit abandon | Leave without recording a rep |
exit | Confirm the final state, record the rep, and sync. The exit check is not an extra attempt |
Exam habits are set up for you in the shell: k is an alias for kubectl, $DO expands to --dry-run=client -o yaml, and a vim configuration suited to YAML is in place.
Grading
Graders inspect the live system: selectors, endpoints, HTTP responses from inside the cluster, file contents and services on the host. They never read your answer. A grade prints each check with a mark:
-- graded at 5m17s (target 7 min) --
✓ service selector matches pod labels
✓ 3 ready endpoints
○ HTTP 200 from inside the cluster
When a check fails, the grader says what it found, not just that it failed. A rep passes when every check passes. A pass on the first grade with no hints and no solution is a cold pass: one kubefit grade that passes, then exit. If you never grade in the shell, the check at exit is your one attempt, so a pass there is a cold pass too.
Hints and the solution
Stuck? kubefit hint reveals the walkthrough one section at a time: the first hint is where to start, the next ones are the steps. kubefit solution prints the whole walkthrough. Both are recorded on the rep, so a pass with help still counts and still teaches, but it is not a cold pass, and the scheduler brings the exercise back sooner. In the LFCS VM the commands are kubefit-hint and kubefit-solution.
Outside a drill, kubefit hint <id> [n] and kubefit solution <id> just read.
The clock
The clock starts when the task prints and stops when you exit or abandon. Your pace is the elapsed time divided by the task's target. Targets are training targets, not official exam timings.
Modes
Default. A nested shell with the status line. Best for everyday use.
--tmux. Inside a tmux session, kubefit opens the task with a live clock in a pane above your shell and closes it when the drill ends:
kubefit drill cka --tmux
--enter. The classic mode: your terminal shows the timer, and pressing Enter grades. f finishes as is, q abandons. Useful for scripting and for shells kubefit cannot wrap.
Between drills
Drills in the same track reuse the same cluster. Each drill reseeds its own starting state, and a repair step resets shared cluster state between exercises. If a drill needs an add-on such as an ingress controller, Gateway API, metrics-server, MetalLB or Cilium, it is installed once per cluster from the pack.
Ending a session
kubefit end
Deletes the kind clusters kubefit created, the LFCS VM and its disks, and the seeded files. Your reps and notes are kept. Run it when you are done for the day or before switching to a track that needs a different cluster profile.