2 Node Roles
gitchegumi edited this page 2026-08-29 01:37:06 -05:00

Node Roles

Node Planned role Workload intent Storage / accelerator
NucBox G5 RKE2 server, control plane, etcd Cluster management only; may also physically host external Forgejo Intel N97, ~12 GB RAM
Sager laptop RKE2 worker General workloads, secondary game-server worker, Jellyfin candidate, GTX 1070 workloads GTX 1070; local Jellyfin cache/transcode; shared TrueNAS game storage planned
OptiPlex 5070 RKE2 worker Primary game-server worker, shared with Sager where practical Existing local PVs initially; shared TrueNAS-backed game storage planned
Media server RKE2 GPU worker ComfyUI and other approved GPU workloads RTX 3080 Ti; ~786 GB of node-local ComfyUI assets
TrueNAS SCALE External storage appliance Shared and Kubernetes-managed persistent storage Existing ZFS datasets under /mnt/homelab/apps/ and /mnt/homelab/media

Scheduling policy

NucBox control plane

The NucBox carries a control-plane taint that normal application workloads do not tolerate. Cluster components that legitimately require the server remain allowed. This protects the relatively small control-plane node from application resource pressure.

Forgejo remains outside Kubernetes initially but may still run on the same physical NucBox. It is therefore outside the Kubernetes failure boundary, not necessarily the NucBox hardware failure boundary.

Sager and OptiPlex game-server placement

The OptiPlex is the initial primary game-server worker and may continue using existing local PVs during early migration. The target is to move suitable game-server persistent data to shared TrueNAS-backed storage so workloads can schedule across the OptiPlex and Sager where practical.

Scheduling policy should distinguish between:

  • Game servers still tied to OptiPlex local data
  • Game servers using shared TrueNAS storage and eligible for either worker
  • Workloads that should not consume game-server capacity

Labels, taints, tolerations, and required affinity must reflect the selected storage placement. A toleration alone is not a placement guarantee.

Sager workload intent

The Sager is planned as:

  • A secondary game-server worker
  • A Jellyfin candidate
  • A GTX 1070 workload host where useful
  • The owner of local Jellyfin cache/transcode data if Jellyfin moves there

Jellyfin media remains on the existing TrueNAS media dataset.

Media-server GPU placement

The media server advertises its RTX 3080 Ti as a schedulable resource. ComfyUI remains tied to this node because both the GPU and approximately 786 GB of model assets are local. Those assets use a node-affined local PV.

Sager GPU

The GTX 1070 is a possible secondary GPU resource. It should be enabled only if driver compatibility and useful workload demand justify the added operational surface.

Failure considerations

Node-local data does not gain high availability merely because it is represented by a Kubernetes PV. Local-PV workloads require documented backup, node-loss recovery, and restoration procedures. Moving suitable game-server state to TrueNAS improves placement flexibility but does not remove the need for application-aware backup and recovery.