Troubleshooting
Start with kubefit doctor and kubefit version. Most failures are one of the ones below; each heading is the symptom.
The confirmation email did not arrive
Check spam and quarantine for mail from the kubefit.com domain, check the address you typed, then register again ↗ with the same email to request a fresh confirmation link. Requests are rate limited, so wait a few minutes between tries. If nothing arrives, write to hello@kubefit.com from that address. Full steps: Email did not arrive.
kubefit login hangs, or the code is rejected
The code lasts ten minutes and works once. Press Ctrl-C and run kubefit login again for a new code; never approve a page whose code differs from your terminal. If the approval page will not let you sign in, the account is not confirmed yet (see above) or the password is wrong. More cases: When login does not complete.
brew install kubefit refuses the tap
Refusing to load formula ... from untrusted tap means Homebrew wants the tap trusted first: brew trust BGilleran522/kubefit, then install again.
kubefit doctor says Docker is stopped
Docker is installed but its daemon is not running. Start Docker Desktop (or your engine) and run doctor again. Kubernetes drills cannot start without it.
The cluster takes a long time to create
The first drill pulls the kind node image and, for some tracks, add-on images. Later drills reuse the cluster. If creation fails midway, run kubefit end and try again.
"cluster muscle was created for the base profile; this exercise needs cks"
A CKS drill found a muscle cluster that a base track built. Run kubefit end to delete it, then start the drill again and let kubefit rebuild with the hardened profile. The other direction works without kubefit end, and CKNE never hits this because it uses its own muscle-ckne cluster.
An LFCS drill cannot start the VM
Check limactl --version and that virtualization is available. The VM downloads an Ubuntu cloud image on first start. If the VM is in a bad state, kubefit end deletes it and the next drill recreates it. Practice disks are attached blank; setup unmounts anything Lima auto-mounted before a storage exercise begins.
A grade fails and I disagree
Read the check's message: graders report what they found. Common causes are a resource in the wrong namespace, a name that differs from the task, a selector that does not match labels, or a change made on the wrong node. kubefit task reprints the exact names. Graders check the live system, so kubectl get and kubectl describe show you what they see.
My rep did not show up on the site
Reps sync after each recorded drill. If you were offline, run kubefit sync. If the CLI reports it is not signed in, run kubefit login again.
The task mentions a file that is not in the exercise directory
Your cached pack is older than the task you are reading, so the helper the task names (for example ./kubesec-score.sh in cks-04-supply-chain) was added after the cache was downloaded. Run kubefit packs <track> and start the drill again. CLI releases from v0.1.15 refresh the pack automatically before every drill and mock exam.
kubefit packs fails
- Not signed in, or 401. Run
kubefit login. - 429. You hit the daily download quota, which names itself in the message. It resets the next day; cached packs keep working meanwhile.
<track> exam download: HTTP ... (drill pack remains available). The drill pack was stored and only the mock exam form failed. Drills work; runkubefit packs <track>again beforekubefit test.- Will not verify. The CLI refuses a pack whose signature does not match its built-in public key. Re-run
kubefit packs. If it persists, the CLI is out of date for the packs the app publishes:brew upgrade kubefit, or repeat the Linux download on Install. See Packs and signing.
A drill says a tool is missing
Some tracks need more than the base tools: istioctl for the istio pack, trivy for most CKS drills, limactl for LFCS, and Python 3 and Bash for mock exams. From CLI v0.1.9, kubefit doctor lists all of them, marks the ones beyond Docker, kind, kubectl and helm as optional, and gives install advice for your platform, as does the message a drill prints. Earlier versions check only the base tools and Lima, and suggest brew install even on Linux; use Install there.
"a drill or mock is already running"
A drill is still open or paused, perhaps in another terminal. Go back to it and kubefit resume, or end it with kubefit escape. The same state makes kubefit end refuse to run.
A mock exam will not start, or stopped
dedicated exam unavailable ... run kubefit packs <track>. The exam form is not cached. Run that command.exam requires python3. Mock exams need Python 3 and Bash on the host, LFCS included.an exam is already recorded as activeorthe exam supervisor stopped. The exam's process died, for example when the terminal closed.kubefit test --recovercloses it as ungraded; the clock is never resumed.- Most commands are refused during an exam. While one is active, only
task,clock,submit,escape,login,logout,sync,version,helpandreportrun, from any terminal.
refusing insecure KUBEFIT_SERVER
KUBEFIT_SERVER must be an HTTPS origin unless it is localhost or a loopback address. Unset it for normal use: unset KUBEFIT_SERVER. If the message persists, the value was saved into ~/.kubefit/config.json; see Local files.
Still stuck
Write to hello@kubefit.com with the output of kubefit version and kubefit doctor, the exercise id if there is one, and what you saw. Leave out ~/.kubefit/config.json: it holds your token.
Starting over
kubefit end
removes clusters, the VM and seeded files but keeps your reps, notes and token. To remove everything, delete ~/.kubefit as well. Local files and environment lists what is in it.