dhi.io/node-feature-discovery
Node feature discovery for Kubernetes.
All examples in this guide use the public image. If you've mirrored the repository for your own use (for example, to your Docker Hub namespace), update your commands to reference the mirrored image instead of the public one.
For example:
dhi.io/node-feature-discovery:<tag><your-namespace>/dhi-node-feature-discovery:<tag>For the examples, you must first use docker login dhi.io to authenticate to the registry to pull the images.
Node Feature Discovery detects hardware features and configuration on Kubernetes nodes. It publishes feature information as node labels and extended resources so workloads can be scheduled onto compatible nodes.
This Docker Hardened Node Feature Discovery image includes the upstream binaries:
nfd-masternfd-workernfd-topology-updaternfd-gckubectl-nfdnfdThe image also includes the upstream default worker configuration at
/etc/kubernetes/node-feature-discovery/nfd-worker.conf.
The upstream image does not define a default entrypoint or command. Use the Kubernetes manifests or explicitly select the binary you want to run.
Use --entrypoint to run an individual binary:
$ docker run --rm --entrypoint nfd-worker dhi.io/node-feature-discovery:<tag> -version
nfd-worker v0.19.0
Node Feature Discovery is typically deployed to Kubernetes with the upstream manifests or Helm chart. To use the Docker
Hardened Image, override the image registry, repository, and tag values to point at dhi.io/node-feature-discovery.
Create an image pull secret for the DHI registry:
$ kubectl create secret docker-registry dhi-pull-secret \
--docker-server=dhi.io \
--docker-username=<Docker username> \
--docker-password=<Docker token> \
--docker-email=<Docker email> \
--namespace=node-feature-discovery
Use a Docker Hub personal access token, not your account password. For more detail, see DHI authentication in Kubernetes.
See the upstream deployment documentation for current manifests and Helm values: https://kubernetes-sigs.github.io/node-feature-discovery/stable/get-started/deployment-and-usage.html
Docker Hardened Images publish multiple variants where applicable:
This image currently publishes Debian 13 and Alpine (3.23 / 3.24) runtime and dev variants. It does not currently publish FIPS variants.
Replace the upstream image reference with the Docker Hardened Image reference:
| Upstream image | Docker Hardened Image |
|---|---|
registry.k8s.io/nfd/node-feature-discovery:<tag> | dhi.io/node-feature-discovery:<tag> |
The Docker Hardened Image follows the upstream image's no-entrypoint behavior and includes the same primary binaries. Runtime variants are minimal and do not include a shell or package manager. Use a dev variant or Docker Debug when you need interactive troubleshooting tools.
If a command fails with executable file not found, confirm that the manifest or Helm values use one of the included
NFD binaries as the command or entrypoint.
If Kubernetes cannot pull the image, confirm that the namespace contains an image pull secret for dhi.io and that the
workload references that secret.
For general DHI troubleshooting, see the Docker Hardened Images documentation: https://docs.docker.com/dhi/