Hardware

Every node, every IP, every role.

The cluster is deliberately heterogeneous: the original Orange Pi 5s sit alongside Lenovo mini-PCs/Old Laptop on a wired 192.168.1.0/24 LAN. Every cluster node runs DietPi with K3s data on local NVMe/SSD storage.

Cluster nodes

opi5-controlplane

  • Model Lenovo ThinkCenter M900
  • OS DietPi Trixie
  • Architecture amd64
  • CPU Intel Core i5-6500T · 4 cores / 4 threads
  • Memory 8 GB DDR4
  • Storage 256 GB NVMe SSD
  • External 4TB NVMe SSD
  • IP 192.168.1.240

opi5-worker-0

  • Model Orange Pi 5
  • OS DietPi Trixie
  • Architecture arm64
  • CPU Rockchip RK3588S · 4×A76 + 4×A55
  • Memory 8 GB LPDDR4
  • Storage 128 GB NVMe SSD
  • External 4TB NVMe SSD
  • IP 192.168.1.230

opi5-worker-1

  • Model Orange Pi 5
  • OS DietPi Trixie
  • Architecture arm64
  • CPU Rockchip RK3588S · 4×A76 + 4×A55
  • Memory 8 GB LPDDR4
  • Storage 128 GB NVMe SSD
  • External 4TB NVMe SSD
  • IP 192.168.1.231

opi5-worker-2

  • Model Orange Pi 5
  • OS DietPi Trixie
  • Architecture arm64
  • CPU Rockchip RK3588S · 4×A76 + 4×A55
  • Memory 8 GB LPDDR4
  • Storage 128 GB NVMe SSD
  • External 4TB NVMe SSD
  • IP 192.168.1.232

opi5-worker-3

  • Model Orange Pi 5
  • OS DietPi Trixie
  • Architecture arm64
  • CPU Rockchip RK3588S · 4×A76 + 4×A55
  • Memory 8 GB LPDDR4
  • Storage 128 GB NVMe SSD
  • External 4TB NVMe SSD
  • IP 192.168.1.233

opi5-worker-4-lenovo

  • Model Lenovo ThinkPad
  • OS DietPi Trixie
  • Architecture amd64
  • CPU Intel Core i5 · 4 cores / 8 threads
  • Memory 16 GB DDR4
  • Storage 512 GB NVMe SSD
  • External 4TB NVMe SSD
  • IP 192.168.1.234

opi5-worker-5-genai

  • Model MinisForum M1 Pro-125H
  • OS DietPi Trixie
  • Architecture amd64
  • CPU Intel Core Ultra 5 125H · 14 cores
  • Memory 128 GB DDR5
  • Storage 1 TB NVMe SSD
  • External 4TB NVMe SSD
  • IP 192.168.1.235

Outside the cluster

Not everything belongs in Kubernetes. DNS is the best example: if the cluster is down, the network should still resolve. Two NanoPi NEO3 boards run AdGuard Home independently of the cluster, wired straight into the router's LAN ports rather than the switch. An old MacBook Air runs as a GitLab CI runner on the dedicated IOT Wi-Fi (192.168.100.0/24), kept off the cluster network entirely. The household's personal Wi-Fi (192.168.10.0/24) is a separate network too.

dns01

  • Model NanoPi NEO3
  • OS DietPi Trixie
  • Architecture arm64
  • CPU Rockchip RK3328 · 4×A53
  • Memory 1 GB DDR4
  • Storage MicroSD card
  • IP 192.168.1.20

Primary AdGuard Home instance, providing network-wide ad blocking and local rewrites. Wired straight into the router's LAN ports, independent of the switch.

dns02

  • Model NanoPi NEO3
  • OS DietPi Trixie
  • Architecture arm64
  • CPU Rockchip RK3328 · 4×A53
  • Memory 1 GB DDR4
  • Storage MicroSD card
  • IP 192.168.1.21

Secondary AdGuard Home instance. Also on the router's LAN ports, so the household keeps resolving even when the cluster doesn't.

gitlab-runner-mac

  • Model MacBook Air
  • OS T2-Ubuntu
  • Architecture amd64
  • CPU Intel Core i5
  • Memory 8 GB
  • Storage 512 GB SSD
  • IP IOT Wi-Fi · 192.168.100.221

It was going to be the next worker, but Linux on T2 hardware still shows driver instability, so it stayed out of the cluster. Now a dedicated GitLab CI runner, kept on the IOT Wi-Fi, deliberately off the cluster network while the experiment continues.

backup-raspi3

  • Model Raspberry Pi 3
  • OS DietPi
  • Architecture armhf
  • CPU Broadcom BCM2837 · 4×A53
  • Memory 1 GB LPDDR2
  • Storage MicroSD card
  • External USB drive (RustFS backup data)
  • IP IOT Wi-Fi · 192.168.100.220

Retired from the cluster and moved to the IOT Wi-Fi network. Now runs the standalone RustFS instance that holds the Velero cluster backups (Manifests and PVC data).

Cluster Devices

All Cluster Devices
Cluster Devices.