Skip to content

feat: add Node Feature Discovery for hardware-aware pod scheduling #1496

Description

@ixxeL2097

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/

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions