Architecture Decision Record

ADR 006: Kubernetes Nodes as Proxmox VMs, Not Bare Metal

The virtualization pivot that made nodes disposable, backups whole, and GPU passthrough finally work.

Status: Accepted  ·  Date: Nov 2025  ·  ← All ADRs


Context

The early cluster ran k0s directly on bare metal, with the server treated as a pet. That period produced two hard lessons: OS-level problems meant logging in and hand-fixing state I could no longer reconstruct, and GPU passthrough into containers on bare-metal k0s was a fight I lost completely.

Options for the next iteration:

Decision

Run a 3-node Proxmox cluster (ZFS on each host) and provision every Kubernetes node as a VM, defined in Terraform. Placement is deliberate and static: each control-plane VM lands on a different physical host, so no single hardware failure takes out quorum.

Reasoning

Tradeoffs

Outcome

Nodes are rebuilt routinely without drama. The full stack — Proxmox → Talos VM → NVIDIA device plugin → Ollama — has survived host reboots and upgrades. This decision is the foundation ADR 007 (Talos) stands on: immutable node OS only pays off when creating and destroying nodes is trivial.