# K3s Session State # Saved: 2026-04-14 ## Current State K3s v1.34.6 cluster fully operational on Proxmox VMs + KVM worker over WireGuard mesh. fat_mama migrated from VirtualBox to KVM/libvirt on workstation 2026-04-14. All Proxmox K3s VMs have onboot: 1 set (fixed 2026-04-12). ## Proxmox VMs | Node | vmbr1 IP | WG IP | Proxmox Host | Role | |---|---|---|---|---| | pve-control | 10.10.10.151 | 10.0.0.6 | pve | k3s control plane | | pve-worker | 10.10.10.126 | 10.0.0.7 | pve | k3s worker | | adder-control | 10.10.10.185 | 10.0.0.8 | adder | k3s control plane | | adder-worker | 10.10.10.83 | 10.0.0.9 | adder | k3s worker | | game-control | 10.10.10.158 | 10.0.0.10 | game | k3s control plane | | game-worker-hdd | 10.10.10.186 | 10.0.0.11 | game | k3s worker (local-lvm/HDD) | | game-worker-ssd | 10.10.10.153 | 10.0.0.12 | game | k3s worker (game-ssd/NVMe) | | fat_mama | 192.168.40.220 | 10.0.0.13 | workstation (KVM/libvirt, macvtap enp4s0) | k3s worker | WG IPs 10.0.0.2–10.0.0.5 reserved (old VirtualBox nodes, do not reuse). Hub: DO droplet at 138.197.87.251:51820, WG IP 10.0.0.1 ## VM Specs | Node | vCPUs | RAM | Disk | Storage | |---|---|---|---|---| | pve-control | 2 | 2GB | 20G | local-lvm | | pve-worker | 6 | 8GB | 100G | local-lvm | | adder-control | 2 | 2GB | 20G | local-lvm | | adder-worker | 6 | 8GB | 100G | local-lvm | | game-control | 2 | 2GB | 20G | local-lvm | | game-worker-hdd | 6 | 8GB | 200G | local-lvm (HDD) | | game-worker-ssd | 10 | 8GB | 200G | game-ssd (NVMe) | | fat_mama | 12 | 20GB | 200G | /var/lib/libvirt/images (qcow2) | ## Network Architecture - Proxmox VMs on vmbr1 (10.10.10.0/24), DHCP - fat_mama on LAN (192.168.40.0/24) via macvtap on enp4s0 — workstation host cannot directly ping/SSH to it; reachable from rest of LAN and via WireGuard at 10.0.0.13 - WireGuard mesh via DO hub — all nodes have static WG IPs (10.0.0.0/24) - Full mesh: all nodes have each other as explicit WireGuard peers (not just hub-and-spoke) - K3s uses --flannel-iface=wg0 so all cluster traffic runs over WireGuard - Caddy at DO hub proxies external traffic to any node's WG IP + NodePort - Tailscale/Headscale abandoned — too unreliable for cluster networking ## Proxmox Host Specs - pve: Meerkat NUC, 64GB RAM, 4TB NVMe - adder: Adder WS laptop, 32GB RAM, 2TB NVMe, RTX 2070 - game: old gaming PC, 16GB RAM, 256GB NVMe (game-ssd) + 2TB HDD (local-lvm) - workstation: i9-13900KF, 96GB RAM, RTX 4090, Fedora (runs fat_mama via KVM/libvirt) ## VM Provisioning ### Template & Clone Scripts Scripts at `~/private/Knowledge/repos/homelab/proxmox/scripts/`: - `create-debian-template.sh [STORAGE] [BRIDGE]` - Defaults: STORAGE=local-lvm, BRIDGE=vmbr1 - Bakes in: qemu-guest-agent, curl, wget, nano, rsync, htop, tmux, emacs-nox, nfs-common, tailscale - Zeroes /etc/machine-id, removes /etc/ssh/ssh_host_* (Cloud-Init regenerates on first boot) - Does NOT create .ssh or set keys — done post-boot via qm set - `clone-vm.sh [CORES] [MEMORY_MB] [DISK_SIZE] [STORAGE]` - Defaults: 2 cores, 2048MB RAM, 20G disk, local-lvm storage - Full clone, auto-starts the VM ### Post-Clone Formula (confirmed working) 1. Clone: `./clone-vm.sh