Some checks failed
The crash-loop was NOT etcd starvation (my earlier diagnosis was wrong). The generated config sets `protect-kernel-defaults: true`, which makes the kubelet refuse to start unless vm.overcommit_memory=1, kernel.panic=10 and kernel.panic_on_oops=1 are set: Failed to start ContainerManager err="invalid kernel flag: vm/overcommit_memory expected 1 actual 0, kernel/panic expected 10 actual 0, ..." k3s then exited 1 and restart-looped, which downstream looked exactly like etcd re-initialising and the apiserver flapping -- so it read as a CPU/etcd problem when it was a missing-sysctl problem. Production sets these via install.ks.ts + sysctl.ts (applyCisHardening); the sim's sysctl.d was missing them. Added the byte-for-byte CIS set. Result: fresh build, all three servers k3s=active with 0 restarts, 3-node embedded-etcd cluster formed and stable, apiserver responsive. NotReady is expected (no CNI yet). The etcd timer tuning stays as cheap nested-virt insurance but was not the fix; its comment is corrected. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DMVzWZgiKW2wquf5z8S1yH
11 KiB
Executable File
11 KiB
Executable File