docs(host-access): runbook for reaching nodes when SSH is broken #21
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "docs/host-access"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
During the NUT rollout we hit a wall trying to SSH into worker nodes — the workstation's current ed25519 key wasn't in their authorized_keys (only an old ssh-rsa from a prior workstation was). Couldn't fix it via SSH (chicken-and-egg). Couldn't go through pi5-master (master has no SSH key of its own, can't reach workers either). The path that actually worked:
kubectl debug node/<k8s-name> --profile=sysadmin -- chroot /host sh— privileged debug pod on the target node, host fs at /host, no SSH needed.Documenting the pattern + the four-naming-systems trap that made it harder to find.
What's in this PR
docs/host-access.md: full runbook-lan/ k8s node name / IP) with current fleet mappingkubectl debug node/<k8s>pattern + gotchas (use k8s name not Ansible alias; debug pods don't auto-clean; stdout sometimes swallowed in loops)CLAUDE.md: "Host access naming" subsection expanded from 2 naming systems to 4 (k8s name was missing — real confusion whenkubectl debug node/pi5-worker2failed); points at the new docdocs/README.md: new index entry under Core OperationsWhy this matters
We've hit this twice now (worker1 was originally excluded from
nut_clientsbased on this same wrong-key issue; turned out all 5 workers had the same problem). Without a runbook, the next person — or the next session — will rediscover it from scratch.Not in scope (followups)
authorized_keysacross the fleet. The kubectl-debug path is the rescue, not the standing-state. Once a role exists, demote the manual recipe to "use only when Ansible can't reach the host."raspberrypi[-suffix]to match their DHCP / Ansible names (collapses 4 names → 2). Bigger change, separate decision.