Requirements
- Linux (x86_64/Arm64/Arm)
- kubectl (properly set up and configured to work with your Kubernetes cluster)
Quick start
Get the source code
git clone -b v0.4.2 https://github.com/kubernetes-sigs/node-feature-discovery-operator
Deploy the operator
IMAGE_TAG=k8s.gcr.io/nfd/node-feature-discovery-operator:v0.4.2
make deploy
By default the operator will watch NodeFeatureDiscovery
objects only in the namespace where the operator is deployed in. This is specified by the WATCH_NAMESPACE
env variable in the operator deployment manifest. If unset the operator will watch ALL namespaces.
Create a NodeFeatureDiscovery instance
kubectl apply -f config/samples/nfd.kubernetes.io_v1_nodefeaturediscovery.yaml
Image variants
Node-Feautre-Discovery-Operator currently offers two variants of the container image. The "full" variant is currently deployed by default.
Full
This image is based on debian:buster-slim and contains a full Linux system for doing live debugging and diagnosis of the operator.
Minimal
This is a minimal image based on gcr.io/distroless/base and only supports running statically linked binaries.
The container image tag has suffix -minimal
(e.g. k8s.gcr.io/nfd/node-feature-discovery-operator:v0.4.2-minimal
)
Verify
The Operator will deploy NFD based on the information on the NodeFeatureDiscovery CR instance, after a moment you should be able to see
$ kubectl -n node-feature-discovery-operator get ds,deploy
NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
daemonset.apps/nfd-worker 3 3 3 3 3 <none> 5s
NAME READY UP-TO-DATE AVAILABLE AGE
deployment.apps/nfd-master 1/1 1 1 17s
Check that NFD feature labels have been created
$ kubectl get no -o json | jq .items[].metadata.labels
{
"beta.kubernetes.io/arch": "amd64",
"beta.kubernetes.io/os": "linux",
"feature.node.kubernetes.io/cpu-cpuid.ADX": "true",
"feature.node.kubernetes.io/cpu-cpuid.AESNI": "true",
"feature.node.kubernetes.io/cpu-cpuid.AVX": "true",
...