Overview
Deploy Node Feature Discovery (NFD) to automatically label Kubernetes nodes with detected hardware capabilities, enabling hardware-aware pod scheduling without hardcoded node names.
Why
Currently, workloads that need specific hardware (e.g., a node with more RAM, a specific CPU feature, or future GPU support) rely on either:
- Hardcoded
nodeName or nodeSelector: kubernetes.io/hostname — brittle
- Manual node labels — not automatic, drift over time
NFD discovers and labels hardware automatically.
Labels NFD adds
# CPU features
feature.node.kubernetes.io/cpu-cpuid.AVX2: "true"
feature.node.kubernetes.io/cpu-cpuid.AESNI: "true"
# PCI devices (e.g., Intel GPU)
feature.node.kubernetes.io/pci-0300_8086.present: "true"
# Memory topology
feature.node.kubernetes.io/memory-numa: "true"
# Kernel features
feature.node.kubernetes.io/kernel-version.major: "6"
# System info
feature.node.kubernetes.io/system-os_release.ID: talos
Use cases in this cluster
- Schedule CPU-intensive workloads (Loki, Prometheus) on nodes with AVX2
- Future GPU workloads (Plex hardware transcoding) via PCI device label
- Ensure crypto workloads use nodes with AES-NI hardware acceleration
NodeFeatureRule CRDs to define custom labels from detected features
Reference
- Inspired by szinn/k8s-homelab NFD + Intel GPU setup
- Chart:
https://kubernetes-sigs.github.io/node-feature-discovery/charts
- Manifest location:
gitops/manifests/node-feature-discovery/
Overview
Deploy Node Feature Discovery (NFD) to automatically label Kubernetes nodes with detected hardware capabilities, enabling hardware-aware pod scheduling without hardcoded node names.
Why
Currently, workloads that need specific hardware (e.g., a node with more RAM, a specific CPU feature, or future GPU support) rely on either:
nodeNameornodeSelector: kubernetes.io/hostname— brittleNFD discovers and labels hardware automatically.
Labels NFD adds
Use cases in this cluster
NodeFeatureRuleCRDs to define custom labels from detected featuresReference
https://kubernetes-sigs.github.io/node-feature-discovery/chartsgitops/manifests/node-feature-discovery/