kubestronaut-sim runs each exam task on a host of its own - a kind (kubeadm) cluster in rootless podman, or a QEMU/KVM Ubuntu VM for the CKS tasks that need their own kernel (Falco, AppArmor) - and puts a browser desktop in front of them, the way killer.sh and sailor.sh do. - ksim, sim/: the engine (sessions, drills, study mode, grading, coverage, audit), host and VM lifecycle, the desktop - images/: exam host images (common, CKS variant with its tools, VM guest) - cka/ (131 tasks), ckad/ (105), cks/ (110): task banks, curricula with study notes, reference solutions and scripted solutions Every domain of every track has at least 17 pool tasks. `./ksim audit` proves a task three ways: it seeds cleanly on its own host, scores nothing before anyone has worked on it, and reaches full marks when its scripted solution is run on the host as `candidate`. All 346 tasks pass (CKA audited 2026-10-13, CKAD and CKS 2026-10-12). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01JZPd3GGWyxTgAkL6a4gAJz
12 lines
564 B
Bash
Executable File
12 lines
564 B
Bash
Executable File
#!/bin/sh
|
|
# kubeadm on an exam host. The packaged binary is /usr/bin/kubeadm.real (a dpkg diversion, see
|
|
# images/node-cks/Containerfile). `kubeadm upgrade` checks the node first and stops when the cpuset
|
|
# cgroup controller is missing - which it always is on a rootless container node, and never on a
|
|
# real one. This wrapper lets that one check pass and changes nothing else.
|
|
if [ "$1" = upgrade ]; then
|
|
case "$2" in
|
|
plan|apply|node) exec /usr/bin/kubeadm.real "$@" --ignore-preflight-errors=SystemVerification ;;
|
|
esac
|
|
fi
|
|
exec /usr/bin/kubeadm.real "$@"
|