Files
home-server/docs/Racks.md

7.7 KiB
Raw Permalink Blame History

Physical racks — Noble lab (10")

This page is a logical rack layout for the noble Talos lab: three 10" (half-width) racks, how rack units (U) are used, and Ethernet paths on 192.168.50.0/24. Node names and IPs match talos/CLUSTER-BUILD.md and docs/architecture.md.

Legend

Symbol Meaning
/ filled cell Equipment occupying that 1U
Reserved / future use
· Empty
━━ Copper to LAN switch

Rack unit numbering: U increases upward (U1 = bottom of rack, like ANSI/EIA). Slot in the diagrams is top → bottom reading order for a quick visual scan.

Three racks at a glance

Read top → bottom (first row = top of rack).

Primary (10") Storage B (10") Rack C (10")
Fiber ONT Mac Mini empty
UniFi Fiber Gateway NAS empty
Patch panel JBOD empty
2.5 GbE ×8 PoE switch empty empty
Raspberry Pi cluster empty empty
helium (Talos) empty empty
neon (Talos) empty empty
argon (Talos) empty empty
krypton (Talos) empty empty

Connectivity: Primary rack gear shares one L2 (192.168.50.0/24). Storage B and Rack C link the same way when cabled (e.g. Ethernet to the PoE switch, VPN or flat LAN per your design).


Rack A — LAN aggregation (10" × 12U)

Dedicated to Layer-2 access and cable home runs. All cluster nodes plug into this switch (or into a downstream switch that uplinks here).

  TOP OF RACK
  ┌────────────────────────────────────────┐
  │ Slot 1  ········· empty ·············· │  12U
  │ Slot 2  ········· empty ·············· │  11U
  │ Slot 3  ········· empty ·············· │  10U
  │ Slot 4  ········· empty ·············· │   9U
  │ Slot 5  ········· empty ·············· │   8U
  │ Slot 6  ········· empty ·············· │   7U
  │ Slot 7  ░░░░░░░ optional PDU ░░░░░░░░ │   6U
  │ Slot 8  █████ 1U cable manager ██████ │   5U
  │ Slot 9  █████ 1U patch panel █████████ │   4U
  │ Slot10  ███ 8-port managed switch ████ │   3U  ← LAN L2 spine
  │ Slot11  ········· empty ·············· │   2U
  │ Slot12  ········· empty ·············· │   1U
  └────────────────────────────────────────┘
  BOTTOM

Network role: Every node NIC → switch access port → same VLAN / flat LAN as documented; kube-vip VIP 192.168.50.230, MetalLB 192.168.50.210229, Traefik 192.168.50.211 are logical on node IPs (no extra hardware).


Rack B — Control planes (10" × 12U)

Three Talos control-plane nodes (scheduling allowed on CPs per talconfig.yaml).

  TOP OF RACK
  ┌────────────────────────────────────────┐
  │ Slot 1  ········· empty ·············· │  12U
  │ Slot 2  ········· empty ·············· │  11U
  │ Slot 3  ········· empty ·············· │  10U
  │ Slot 4  ········· empty ·············· │   9U
  │ Slot 5  ········· empty ·············· │   8U
  │ Slot 6  ········· empty ·············· │   7U
  │ Slot 7  ········· empty ·············· │   6U
  │ Slot 8  █ neon  control-plane .20 ████ │   5U
  │ Slot 9  █ argon control-plane .30 ███ │   4U
  │ Slot10  █ krypton control-plane .40 ██ │   3U  (kube-vip VIP .230)
  │ Slot11  ········· empty ·············· │   2U
  │ Slot12  ········· empty ·············· │   1U
  └────────────────────────────────────────┘
  BOTTOM

Rack C — Worker (10" × 12U)

Single worker node; Longhorn data disk is local to each node (see talconfig.yaml); no separate NAS in this diagram.

  TOP OF RACK
  ┌────────────────────────────────────────┐
  │ Slot 1  ········· empty ·············· │  12U
  │ Slot 2  ········· empty ·············· │  11U
  │ Slot 3  ········· empty ·············· │  10U
  │ Slot 4  ········· empty ·············· │   9U
  │ Slot 5  ········· empty ·············· │   8U
  │ Slot 6  ········· empty ·············· │   7U
  │ Slot 7  ░░░░░░░ spare / future ░░░░░░░░ │   6U
  │ Slot 8  ········· empty ·············· │   5U
  │ Slot 9  ········· empty ·············· │   4U
  │ Slot10  ███ helium  worker  .10 █████ │   3U
  │ Slot11  ········· empty ·············· │   2U
  │ Slot12  ········· empty ·············· │   1U
  └────────────────────────────────────────┘
  BOTTOM

Space summary

System Rack Approx. U IP Role
LAN switch A 1U All nodes on 192.168.50.0/24
Patch / cable mgmt A 2× 1U Physical plant
neon B 1U 192.168.50.20 control-plane + schedulable
argon B 1U 192.168.50.30 control-plane + schedulable
krypton B 1U 192.168.50.40 control-plane + schedulable
helium C 1U 192.168.50.10 worker

Adjust empty vs. future rows if your chassis are 2U or on shelves — scale the blocks accordingly.


Network connections

All cluster nodes are on one flat LAN. kube-vip floats 192.168.50.230:6443 across the three control-plane hosts on ens18 (see cluster bootstrap docs).

flowchart TB
  subgraph RACK_A["Rack A — 10\""]
    SW["Managed switch<br/>192.168.50.0/24 L2"]
    PP["Patch / cable mgmt"]
    SW --- PP
  end
  subgraph RACK_B["Rack B — 10\""]
    N["neon :20"]
    A["argon :30"]
    K["krypton :40"]
  end
  subgraph RACK_C["Rack C — 10\""]
    H["helium :10"]
  end
  subgraph LOGICAL["Logical (any node holding VIP)"]
    VIP["API VIP 192.168.50.230<br/>kube-vip → apiserver :6443"]
  end
  WAN["Internet / other LANs"] -.->|"router (out of scope)"| SW
  SW <-->|"Ethernet"| N
  SW <-->|"Ethernet"| A
  SW <-->|"Ethernet"| K
  SW <-->|"Ethernet"| H
  N --- VIP
  A --- VIP
  K --- VIP
  WK["Workstation / CI<br/>kubectl, browser"] -->|"HTTPS :6443"| VIP
  WK -->|"L2 (MetalLB .210.211, any node)"| SW

Ingress path (same LAN): clients → 192.168.50.211 (Traefik) or 192.168.50.210 (Argo CD) via MetalLB — still through the same switch to whichever node advertises the service.