Intel NUC Talos Worker Nodes
Overview
Section titled “Overview”This guide covers adding Intel NUC devices as worker nodes to the existing Talos Linux cluster running on Hetzner with WireGuard networking.
Hardware Requirements
Section titled “Hardware Requirements”Intel NUC Specifications
Section titled “Intel NUC Specifications”- Compatible Models: Intel NUC 11th gen or newer (tested on NUC11TNHi5, NUC11TNKi5)
- RAM: 8GB minimum (16GB recommended for production workloads)
- Storage: 256GB SSD minimum (NVMe preferred)
- Network: Gigabit Ethernet (built-in)
- Power: Compatible power supply unit (PSU)
Hardware Checklist
Section titled “Hardware Checklist”- Intel NUC units
- Compatible PSUs for each NUC
- 8GB+ RAM per NUC
- 256GB+ SSDs per NUC
- USB flash drives for installation (8GB+)
- Ethernet cables
- Network access for initial setup
Phase 1: Hardware Preparation
Section titled “Phase 1: Hardware Preparation”-
Assemble Hardware
Install RAM and SSD in each Intel NUC:
Terminal window # Power off and unplug the NUC# Remove bottom cover screws# Install SO-DIMM RAM in available slots# Install M.2 SSD in available slot# Reassemble and connect power -
BIOS Configuration
Boot each NUC and configure BIOS settings:
- Enable UEFI boot mode
- Disable Secure Boot
- Enable Intel VT-x/VT-d
- Set primary boot device to USB
- Save settings and exit
-
Network Planning
Document network configuration for each NUC:
Terminal window # Example IP assignmentsNUC-01: 192.168.1.10 (DHCP) -> WG: 10.0.0.10NUC-02: 192.168.1.11 (DHCP) -> WG: 10.0.0.11NUC-03: 192.168.1.12 (DHCP) -> WG: 10.0.0.12
Phase 2: Talos Linux Installation
Section titled “Phase 2: Talos Linux Installation”-
Download Talos Linux
Download the latest Talos Linux ISO:
Terminal window # Download Talos ISOcurl -Lo talos-amd64.iso https://github.com/siderolabs/talos/releases/latest/download/talos-amd64.iso# Verify checksumcurl -Lo talos-amd64.iso.sha256 https://github.com/siderolabs/talos/releases/latest/download/talos-amd64.iso.sha256sha256sum -c talos-amd64.iso.sha256 -
Create Bootable USB
Create bootable USB drives for each NUC:
Terminal window # Replace /dev/sdX with your USB devicesudo dd if=talos-amd64.iso of=/dev/sdX bs=4M status=progresssync -
Boot and Install Talos
For each NUC:
Terminal window # Insert USB and boot from it# Talos will load and provide an IP address# Note down the IP address for each NUC
Phase 3: Cluster Configuration
Section titled “Phase 3: Cluster Configuration”-
Generate WireGuard Keys
Generate unique WireGuard keys for each NUC:
Terminal window # Generate keys for each NUC workerfor i in {10..12}; doecho "Generating keys for NUC-$(printf "%02d" $((i-9)))"wg genkey | tee nuc-$i-private.key | wg pubkey > nuc-$i-public.keydone -
Prepare Worker Configuration
Customize the worker configuration for each NUC:
Terminal window # Get the existing cluster configuration from Hetzner control planetalosctl get mc v1alpha1 -o jsonpath='{.spec}' -n [HETZNER_CONTROL_PLANE_IP] > base-worker.yaml# Or use the template from the repositorycp apps/kube/talos-worker.yaml worker-template.yaml -
Update WireGuard Configuration
For each NUC, update the worker configuration:
# Update machine.network.interfaces.wg0.wireguard sectionmachine:network:hostname: "nuc-01" # nuc-01, nuc-02, nuc-03, etc.interfaces:- interface: wg0wireguard:privateKey: "PRIVATE_KEY_FROM_STEP_1"peers:- publicKey: "HETZNER_CONTROL_PLANE_PUBLIC_KEY"endpoint: "HETZNER_CONTROL_PLANE_IP:51820"allowedIPs:- 10.0.0.0/24addresses:- 10.0.0.10/32 # Increment for each NUC
Phase 4: Join NUCs to Cluster
Section titled “Phase 4: Join NUCs to Cluster”-
Apply Worker Configuration
Apply the configuration to each NUC:
Terminal window # For each NUC, apply the customized worker configtalosctl apply-config --insecure --nodes [NUC_IP] --file worker-nuc-01.yamltalosctl apply-config --insecure --nodes [NUC_IP] --file worker-nuc-02.yamltalosctl apply-config --insecure --nodes [NUC_IP] --file worker-nuc-03.yaml -
Verify Node Join
Check that nodes are joining the cluster:
Terminal window # Check cluster nodeskubectl get nodes -o wide# Verify WireGuard connectivitytalosctl dmesg --nodes [NUC_WG_IP] | grep -i wireguard -
Test Connectivity
Verify the setup is working:
Terminal window # Test pod scheduling on NUC workerskubectl run test-pod --image=nginx --restart=Neverkubectl get pods -o wide# Check WireGuard peer statussudo wg show
Troubleshooting
Section titled “Troubleshooting”Common Issues
Section titled “Common Issues”-
WireGuard Connection Failed
Terminal window # Check WireGuard statussudo wg show# Verify endpoint connectivityping HETZNER_CONTROL_PLANE_IP# Check firewall rulessudo ufw status -
Node Not Joining Cluster
Terminal window # Check Talos logstalosctl logs --nodes [NUC_IP] kubelet# Verify cluster tokentalosctl get secrets --nodes [CONTROL_PLANE_IP] -
Hardware Compatibility
Terminal window # Check system compatibilitytalosctl dmesg --nodes [NUC_IP] | grep -i error# Verify hardware detectiontalosctl get hardware --nodes [NUC_IP]
Scaling
Section titled “Scaling”To add additional Intel NUC worker nodes:
- Follow hardware preparation steps
- Generate unique WireGuard keys
- Assign next available WireGuard IP (10.0.0.13, 10.0.0.14, etc.)
- Apply worker configuration
- Verify cluster integration
Security Considerations
Section titled “Security Considerations”- Store WireGuard private keys securely
- Use unique keys for each node
- Consider using hardware TPM for key storage
- Regular security updates via Talos upgrades
- Monitor cluster access logs