%% Cluster Node Topology
%% Related: ADR-0035, ADR-0011, ADR-0037
flowchart TB
subgraph Cluster["Homelab Kubernetes Cluster (14 nodes)"]
subgraph ControlPlane["👑 Control Plane (Companions of the Hall)"]
Bruenor["bruenor
Intel N100"]
Catti["catti
Intel N100"]
Storm["storm
Intel N100"]
end
subgraph GPUNodes["🧙 Wizards (GPU Workers)"]
Khelben["khelben
Radeon 8060S 64GB
🎮 Primary AI"]
Elminster["elminster
RTX 2070 8GB
🎮 CUDA"]
Drizzt["drizzt
Radeon 680M
🎮 ROCm"]
Danilo["danilo
Intel Arc A770
🎮 Intel"]
Regis["regis
NVIDIA GPU
🎮 CUDA"]
end
subgraph CPUNodes["⚔️ Fighters (CPU Workers)"]
Wulfgar["wulfgar
Intel x86_64"]
end
subgraph ARMWorkers["🗡️ Rogues (ARM64 Raspberry Pi)"]
Durnan["durnan
Pi 4 8GB"]
Elaith["elaith
Pi 4 8GB"]
Jarlaxle["jarlaxle
Pi 4 8GB"]
Mirt["mirt
Pi 4 8GB"]
Volo["volo
Pi 4 8GB"]
end
end
subgraph Workloads["Workload Placement"]
AIInference["AI Inference
→ Khelben"]
MLTraining["ML Training
→ GPU Nodes"]
EdgeServices["Lightweight Services
→ ARM64"]
General["General Workloads
→ CPU + ARM64"]
end
subgraph Storage["Storage Affinity"]
Longhorn["Longhorn
x86_64 only"]
NFS["NFS
All nodes"]
end
AIInference -.-> Khelben
MLTraining -.-> GPUNodes
EdgeServices -.-> ARMWorkers
General -.-> CPUNodes
General -.-> ARMWorkers
Longhorn -.->|Excluded| ARMWorkers
NFS --> Cluster
classDef control fill:#2563eb,stroke:#1d4ed8,color:#fff
classDef gpu fill:#7c3aed,stroke:#5b21b6,color:#fff
classDef cpu fill:#dc2626,stroke:#b91c1c,color:#fff
classDef arm fill:#059669,stroke:#047857,color:#fff
classDef workload fill:#9f7aea,stroke:#805ad5,color:#fff
classDef storage fill:#ed8936,stroke:#dd6b20,color:#fff
class Bruenor,Catti,Storm control
class Khelben,Elminster,Drizzt,Danilo,Regis gpu
class Wulfgar cpu
class Durnan,Elaith,Jarlaxle,Mirt,Volo arm
class AIInference,MLTraining,EdgeServices,General workload
class Longhorn,NFS storage