Node Feature Discovery is a Kubernetes add-on that helps automate the discovery and configuration of node features such as CPU, memory, and network interfaces.
Most people in k8s at home use Node Feature Discovery to ensure that pods that need video transcoding capabilities are running on a node with an Intel GPU (which has excellent video transcoding capabilities). But also for detecting a Zigbee/Z-Wave USB sticks.
For example, the following code would guarantee that a node will run on a Node with Intel GPU:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: feature.node.kubernetes.io/custom-intel-gpu
operator: In
values:
- "true"
Node Feature Discovery, would figure out a node has an Intel GPU and add the feature.node.kubernetes.io/custom-intel-gpu: true
label.
Install with:
helm repo add node-feature-discovery https://kubernetes-sigs.github.io/node-feature-discovery/charts/
helm install node-feature-discovery node-feature-discovery/node-feature-discovery -f values.yaml
See examples from other people.
Name | Repo | Stars | Version | Timestamp |
---|---|---|---|---|
node-feature-discovery | rafaribe/home-ops | 51 | 0.16.6 | a day ago |
node-feature-discovery | ishioni/homelab-ops | 108 | 0.16.6 | 2 days ago |
node-feature-discovery | kashalls/home-cluster | 100 | 0.16.6 | 2 days ago |
node-feature-discovery | JJGadgets/Biohazard | 39 | 0.15.1 | 5 days ago |
node-feature-discovery | szinn/k8s-homelab | 191 | 0.16.6 | 14 days ago |
See the most popular values for this chart:
Key | Types |
---|---|
worker.config.core.sources[] (105) - pci | string |
worker.config.core.labelSources[] (10) - custom | string |
string | |
number | |
string | |
worker.config.sources.usb.deviceLabelFields[] (60) - class | string |
worker.config.sources.usb.deviceClassWhitelist[] (59) - "02" | string |
string | |
worker.config.sources.custom[].matchOn[].usbId.device[] (12) - "0200" | string |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
worker.config.sources.pci.deviceClassWhitelist[] (12) - "02" | string |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
worker.tolerations[].effect (20) NoSchedule | string |
worker.tolerations[].key (18) node-role.kubernetes.io/control-plane | string |
string | |
worker.annotations."configmap.reloader.stakater.com/reload" (10) node-feature-discovery-worker-conf | string |
string | |
string | |
string | |
string | |
string | |
boolean, string | |
boolean | |
string | |
string | |
string | |
string | |
string | |
master.affinity.nodeAffinity.preferredDuringSchedulingIgnoredDuringExecution[].preference.matchExpressions[].key (9) node-role.kubernetes.io/master | string |
string | |
string | |
number | |
string | |
string | |
string | |
string | |
number | |
string | |
master.tolerations[].key (8) node-role.kubernetes.io/master | string |
master.tolerations[].effect (6) NoSchedule | string |
string | |
string | |
number | |
string | |
string | |
string | |
string | |
boolean | |
string | |
string | |
boolean | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
string | |
boolean | |
string | |
string | |
string | |
string | |
boolean | |
string | |
string | |
boolean | |
string | |
string | |
string | |
string | |
boolean | |
boolean | |
string | |
string | |
string | |
string |