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 order as kubefit next: a drill whose latest attempt failed, then one you have never tried, then evidence older than 30 days, then an assisted pass, then a pass over target, then one waiting for a retention repeat. Exam weight breaks ties. 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 and 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 coach | Walk through this task with Caz; recorded as assisted practice |
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 pause | Stop the clock and block new kubectl and grade commands in the managed shell |
kubefit resume | Continue the current session and restart its clock |
kubefit escape | Exit immediately without a final grade or a rep |
kubefit abandon | Mark the current task to skip when you exit |
exit | Confirm the final state, record the rep, and sync. The exit check is not an extra attempt |
k calls kubectl in the host shell. CLI v0.1.9 and later also load the pack's lab profile after your own shell configuration: $DO and $do for --dry-run=client -o yaml, $NOW and $now for --force --grace-period=0, vim as KUBE_EDITOR and EDITOR, and in bash, kubectl completion for k. The pack's YAML vim settings apply only when you have no vim or neovim configuration of your own. On an earlier CLI, set $DO yourself as you would in the exam. The LFCS VM always gets the vim settings.
These commands belong to drills. A mock exam has its own shell with no hints, coach, pause or interim grade.
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. The grade at exit prints each check with a mark under a timing header. kubefit grade inside the shell prints the check lines only:
-- 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. An uninterrupted 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.
Guided practice
Run kubefit coach inside this drill for a step-by-step private session. Use shell to try the commands, check for a real grade and done to return to the drill. Outside a drill, kubefit coach <track> starts a new guided attempt. See Coach Caz.
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 both kubefit hint and kubefit-hint work, and the same for 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.
Taking a break or leaving ungraded
CLI v0.1.5 adds kubefit pause, kubefit resume and kubefit escape. Pause keeps your cluster or VM running and freezes the active timer. While paused, kubectl, k, scripts using the managed PATH, and kubefit grade refuse new work and tell you to resume or escape. This is a practice guard inside the managed shell: it cannot block unrelated terminals, an absolute path to kubectl, or requests already running. With --enter, use the control prompt; commands in a separate terminal are outside the guard.
Resume continues the same live session; it does not restore a closed process. Exiting while paused leaves the current task ungraded. Escape exits immediately, without a final grade or rep, even if you previously checked your work. It leaves the environment running; use kubefit end afterwards to delete it.
Paused passes are labeled paused practice. Recorded time excludes breaks. Independent successes still support coverage, but paused attempts do not count as cold passes, pace or retention evidence. Repeat uninterrupted when you want exam-like timing.
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 or escape ends the whole session ungraded. pause and resume control the clock. 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 the signed repair script runs before setup on the shared base/CKS cluster or LFCS VM, including after a failed or escaped drill. If repair fails, the next drill does not start. CKNE uses its separate CNI-less cluster and scenario setup instead of the base-cluster repair script. 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 drill and mock exam clusters, the LFCS VMs and their disks, and the seeded files. Your reps, notes and exam reports are kept. It will not run while a drill or exam is active. Local files lists exactly what goes including the extra CKA recovery resources. Run it when you are done for the day or before moving from a base track to CKS.