Cross-site warm standby for k3s control plane (operational resilience, not HA) #99
Labels
No labels
burndown-2026-06
burndown-2026-08
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
coherence-core
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
qa-fixture
role/advocate
role/director
role/exec
role/frontend
role/gamedev
role/human
role/platform
role/qa
role/science
role/sysadmin
state
ambient
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-flight-deck/infrastructure#99
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Title: Cross-site warm standby for k3s control plane (operational resilience, not HA)
Context
Today the cluster has one always-on failure domain, the home-1 server, which holds the control plane, the datastore, and the orchestrator. The failure mode being designed against is the home-1 site going dark for days with no advance notice. A second home is available as a genuinely independent failure domain with separate power, ISP, and physical location.
Decision
Pursue operational resilience via a cross-site warm standby with manual promotion, explicitly not first-class k3s HA. HA is a failure-domain-count problem, and with a single always-on domain it is unachievable at any spend. A two-domain etcd is also worse for writes than a single node, since losing either member drops below quorum. A public-cloud third domain is off the table by preference, so automated quorum is out, and a manual promote step is the accepted trade for keeping everything inside the homelab.
Topology
Replication and recovery
Why this is acceptable
Running workloads survive a dead control plane because the kubelet keeps existing pods alive without the apiserver. A home-1 outage therefore degrades the cluster to cannot deploy, reschedule, or scale, rather than everything stops, and the manual promote restores write capability when it is actually needed. The result doubles as a demonstrable DR story with concrete RTO and RPO numbers.
Next action
Purchase the home-2 mini-PC. Everything downstream targets a host that does not exist yet, so the build is blocked on the box being bought and joined to Tailscale.
Follow-ups, file once the box exists
Iceboxed in the 2026-05-29 backlog burn-down: cross-site warm standby, far-future resilience play. Reopen anytime if it becomes real.