Add lessons: untimed guided labs, one per curriculum objective, on a host of their own, in the browser and in the terminal. Each step has a check, a hint and its commands; a lesson writes no history or scores, only a done mark on its objective. CKAD 2.1-2.4 (24 steps) and all 27 CKA objectives (135 steps) have one, and `./ksim lesson audit` proves that every step fails, is done by its own commands, then passes. Add CKA tasks 132-147 (cka/bank_course.py) on what a full CKA course teaches beyond the bank: a real upgrade from v1.36, a drain under a PodDisruptionBudget, QoS and eviction, in-place resize, kube-proxy's chains, encryption at rest, an operator, and CSI expansion, snapshots and clones (ensure_csi_hostpath). Move CKA and CKS to Kubernetes v1.37 and rebuild the hosts on Ubuntu 24.04, with kubelet, kubeadm and kubectl as held packages from pkgs.k8s.io; the desktop runs Ubuntu too. Hosts gain man pages, hexdump and xxd. Fix CKS Q4, which gave 3 of 12 points untouched, and CKA Q4 and Q49, whose solutions raced their new CRD. Audited on v1.37: CKA 147/147, CKAD 105/105, CKS 109/110 (Q103, a Falco task, failed to seed once and awaits a re-audit); lessons: 135 of 135 CKA steps and 24 of 24 CKAD steps. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
12 lines
560 B
Bash
Executable File
12 lines
560 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/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 "$@"
|