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
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions