Skip to main content

K3s (legacy)

Retired — kept as legacy reference

The K3s mini-server cluster has been retired. Production workloads now run on the Talos cluster on the Intel NUC 13 Pro hardware.

It was replaced for four reasons:

  • Immutability. Talos has no mutable base OS — drift between nodes is not just unlikely, it's impossible. K3s ran on whatever Linux distro the box happened to ship with, and that drift had to be managed manually.
  • API-driven. Talos is configured exclusively through talosctl over mTLS. No SSH, no shell, no apt-get-day inventory. K3s required maintaining a host-OS layer in addition to the cluster itself.
  • No base OS to care about. With K3s the box was also a Linux server — kernel updates, package upgrades, journald log rotation, fail2ban tuning, etc. With Talos all of that is built into the image and shipped as one atomic upgrade.
  • Streamlined upgrades. Talos upgrades are an image swap with one-command rollback. K3s upgrades meant the cluster and the OS, in two separate upgrade workflows.

The Athlon 3000G hardware is still documented under hardware/k3s for completeness; this page is kept as historical reference.

What ran here

K3s is a single-binary CNCF-certified Kubernetes distribution from Rancher / SUSE. The retired homelab cluster ran K3s on three Inter-Tech / Biostar B450NH mini-servers — AMD Athlon 3000G nodes intended for low-power, always-on workloads.

Why K3s was the choice at the time

  • Single-binary install. Easy bootstrap on consumer-grade hardware.
  • Embedded etcd HA. Works on 3 nodes without an external datastore.
  • Small resource footprint. Comfortable on a 1 GB-RAM Athlon.
  • Different distro from prod on purpose. Until Talos took over, the homelab ran two distinct distributions to keep operator muscle memory honest.

Why it ultimately lost to Talos

See the deprecation banner above. The summary: K3s was a fine distribution, but the homelab needed a node OS — and Talos is the node OS. Running K3s meant accepting an extra mutable layer underneath.

Bootstrap (historical)

# First server (control-plane + etcd init)
curl -sfL https://get.k3s.io | INSTALL_K3S_EXEC="server --cluster-init \
--disable=traefik --flannel-backend=none --disable-kube-proxy" sh -

# Additional servers join with the cluster token
sudo cat /var/lib/rancher/k3s/server/node-token # on the first node
curl -sfL https://get.k3s.io | K3S_URL=https://<first>:6443 \
K3S_TOKEN=<token> INSTALL_K3S_EXEC="server" sh -

--disable=traefik and --flannel-backend=none --disable-kube-proxy switched off the bundled networking/ingress so Cilium could take over.

Where to look next

  • Talos — the active cluster OS, and the reason this page exists in past tense
  • Hardware → K3s cluster — the physical mini-server hardware, also kept for reference