mirror of
https://github.com/kubernetes-sigs/node-feature-discovery.git
synced 2025-03-10 02:37:11 +00:00
Disable AVX10 as unnecessary as AVX10_LEVEL is better suited for checking AVX10 compatibility. There is not yet any hardware with the feature so disabling it shouldn't cause problems for users.
458 lines
9.9 KiB
Markdown
458 lines
9.9 KiB
Markdown
---
|
|
title: "Worker config reference"
|
|
layout: default
|
|
sort: 4
|
|
---
|
|
|
|
# Configuration file reference of nfd-worker
|
|
{: .no_toc}
|
|
|
|
## Table of contents
|
|
{: .no_toc .text-delta}
|
|
|
|
1. TOC
|
|
{:toc}
|
|
|
|
---
|
|
|
|
See the
|
|
[sample configuration file](https://github.com/kubernetes-sigs/node-feature-discovery/blob/{{site.release}}/deployment/components/worker-config/nfd-worker.conf.example)
|
|
for a full example configuration.
|
|
|
|
## core
|
|
|
|
The `core` section contains common configuration settings that are not specific
|
|
to any particular feature source.
|
|
|
|
### core.sleepInterval
|
|
|
|
`core.sleepInterval` specifies the interval between consecutive passes of
|
|
feature (re-)detection, and thus also the interval between node re-labeling. A
|
|
non-positive value implies infinite sleep interval, i.e. no re-detection or
|
|
re-labeling is done.
|
|
|
|
Default: `60s`
|
|
|
|
Example:
|
|
|
|
```yaml
|
|
core:
|
|
sleepInterval: 60s
|
|
```
|
|
|
|
### core.featureSources
|
|
|
|
`core.featureSources` specifies the list of enabled feature sources. A special
|
|
value `all` enables all sources. Prefixing a source name with `-` indicates
|
|
that the source will be disabled instead - this is only meaningful when used in
|
|
conjunction with `all`. This option allows completely disabling the feature
|
|
detection so that neither standard feature labels are generated nor the raw
|
|
feature data is available for custom rule processing.
|
|
|
|
Default: `[all]`
|
|
|
|
Example:
|
|
|
|
```yaml
|
|
core:
|
|
# Enable all but cpu and local sources
|
|
featureSources:
|
|
- "all"
|
|
- "-cpu"
|
|
- "-local"
|
|
```
|
|
|
|
```yaml
|
|
core:
|
|
# Enable only cpu and local sources
|
|
featureSources:
|
|
- "cpu"
|
|
- "local"
|
|
```
|
|
|
|
### core.labelSources
|
|
|
|
`core.labelSources` specifies the list of enabled label sources. A special
|
|
value `all` enables all sources. Prefixing a source name with `-` indicates
|
|
that the source will be disabled instead - this is only meaningful when used in
|
|
conjunction with `all`. This configuration option affects the generation of
|
|
node labels but not the actual discovery of the underlying feature data that is
|
|
used e.g. in custom/`NodeFeatureRule` rules.
|
|
|
|
> **NOTE:** Overridden by the `-label-sources` command line flag and the
|
|
> `core.sources` configurations option (if either of them is specified).
|
|
|
|
Default: `[all]`
|
|
|
|
Example:
|
|
|
|
```yaml
|
|
core:
|
|
# Enable all but cpu and system sources
|
|
labelSources:
|
|
- "all"
|
|
- "-cpu"
|
|
- "-system"
|
|
```
|
|
|
|
```yaml
|
|
core:
|
|
# Enable only cpu and system sources
|
|
labelSources:
|
|
- "cpu"
|
|
- "system"
|
|
```
|
|
|
|
### core.sources
|
|
|
|
**DEPRECATED**: use [`core.labelSources`](#core.labelSources) instead.
|
|
|
|
> **NOTE:** `core.sources` takes precedence over the `core.labelSources`
|
|
> configuration file option.
|
|
|
|
### core.labelWhiteList
|
|
|
|
`core.labelWhiteList` specifies a regular expression for filtering feature
|
|
labels based on the label name. Non-matching labels are not published.
|
|
|
|
> **NOTE:** The regular expression is only matches against the "basename" part
|
|
> of the label, i.e. to the part of the name after '/'. The label prefix (or
|
|
> namespace) is omitted.
|
|
|
|
Default: `null`
|
|
|
|
Example:
|
|
|
|
```yaml
|
|
core:
|
|
labelWhiteList: '^cpu-cpuid'
|
|
```
|
|
|
|
### core.noPublish
|
|
|
|
Setting `core.noPublish` to `true` disables all communication with the
|
|
nfd-master and the Kubernetes API server. It is effectively a "dry-run" option.
|
|
NFD-Worker runs feature detection normally, but no labeling requests are sent
|
|
to nfd-master and no [NodeFeature](../usage/custom-resources.md#nodefeature)
|
|
objects are created or updated in the API server.
|
|
|
|
> **NOTE:** Overridden by the
|
|
> [`-no-publish`](worker-commandline-reference.md#-no-publish)
|
|
> command line flag (if specified).
|
|
|
|
Default: `false`
|
|
|
|
Example:
|
|
|
|
```yaml
|
|
core:
|
|
noPublish: true
|
|
```
|
|
|
|
### core.klog
|
|
|
|
The following options specify the logger configuration. Most of which can be
|
|
dynamically adjusted at run-time.
|
|
|
|
> **NOTE:** The logger options can also be specified via command line flags
|
|
> which take precedence over any corresponding config file options.
|
|
|
|
#### core.klog.addDirHeader
|
|
|
|
If true, adds the file directory to the header of the log messages.
|
|
|
|
Default: `false`
|
|
|
|
Run-time configurable: yes
|
|
|
|
#### core.klog.alsologtostderr
|
|
|
|
Log to standard error as well as files.
|
|
|
|
Default: `false`
|
|
|
|
Run-time configurable: yes
|
|
|
|
#### core.klog.logBacktraceAt
|
|
|
|
When logging hits line file:N, emit a stack trace.
|
|
|
|
Default: *empty*
|
|
|
|
Run-time configurable: yes
|
|
|
|
#### core.klog.logDir
|
|
|
|
If non-empty, write log files in this directory.
|
|
|
|
Default: *empty*
|
|
|
|
Run-time configurable: no
|
|
|
|
#### core.klog.logFile
|
|
|
|
If non-empty, use this log file.
|
|
|
|
Default: *empty*
|
|
|
|
Run-time configurable: no
|
|
|
|
#### core.klog.logFileMaxSize
|
|
|
|
Defines the maximum size a log file can grow to. Unit is megabytes. If the
|
|
value is 0, the maximum file size is unlimited.
|
|
|
|
Default: `1800`
|
|
|
|
Run-time configurable: no
|
|
|
|
#### core.klog.logtostderr
|
|
|
|
Log to standard error instead of files
|
|
|
|
Default: `true`
|
|
|
|
Run-time configurable: yes
|
|
|
|
#### core.klog.skipHeaders
|
|
|
|
If true, avoid header prefixes in the log messages.
|
|
|
|
Default: `false`
|
|
|
|
Run-time configurable: yes
|
|
|
|
#### core.klog.skipLogHeaders
|
|
|
|
If true, avoid headers when opening log files.
|
|
|
|
Default: `false`
|
|
|
|
Run-time configurable: no
|
|
|
|
#### core.klog.stderrthreshold
|
|
|
|
Logs at or above this threshold go to stderr (default 2)
|
|
|
|
Run-time configurable: yes
|
|
|
|
#### core.klog.v
|
|
|
|
Number for the log level verbosity.
|
|
|
|
Default: `0`
|
|
|
|
Run-time configurable: yes
|
|
|
|
#### core.klog.vmodule
|
|
|
|
Comma-separated list of `pattern=N` settings for file-filtered logging.
|
|
|
|
Default: *empty*
|
|
|
|
Run-time configurable: yes
|
|
|
|
## sources
|
|
|
|
The `sources` section contains feature source specific configuration parameters.
|
|
|
|
### sources.cpu
|
|
|
|
#### sources.cpu.cpuid
|
|
|
|
##### sources.cpu.cpuid.attributeBlacklist
|
|
|
|
Prevent publishing cpuid features listed in this option.
|
|
|
|
> **NOTE:** overridden by `sources.cpu.cpuid.attributeWhitelist` (if specified)
|
|
|
|
Default: `[AVX10, BMI1, BMI2, CLMUL, CMOV, CX16, ERMS, F16C, HTT, LZCNT, MMX, MMXEXT,
|
|
NX, POPCNT, RDRAND, RDSEED, RDTSCP, SGX, SGXLC, SSE, SSE2, SSE3, SSE4.1,
|
|
SSE4.2, SSSE3, TDX_GUEST]`
|
|
|
|
Example:
|
|
|
|
```yaml
|
|
sources:
|
|
cpu:
|
|
cpuid:
|
|
attributeBlacklist: [MMX, MMXEXT]
|
|
```
|
|
|
|
##### sources.cpu.cpuid.attributeWhitelist
|
|
|
|
Only publish the cpuid features listed in this option.
|
|
|
|
> **NOTE:** takes precedence over `sources.cpu.cpuid.attributeBlacklist`
|
|
|
|
Default: *empty*
|
|
|
|
Example:
|
|
|
|
```yaml
|
|
sources:
|
|
cpu:
|
|
cpuid:
|
|
attributeWhitelist: [AVX512BW, AVX512CD, AVX512DQ, AVX512F, AVX512VL]
|
|
```
|
|
|
|
### sources.kernel
|
|
|
|
#### sources.kernel.kconfigFile
|
|
|
|
Path of the kernel config file. If empty, NFD runs a search in the well-known
|
|
standard locations.
|
|
|
|
Default: *empty*
|
|
|
|
Example:
|
|
|
|
```yaml
|
|
sources:
|
|
kernel:
|
|
kconfigFile: "/path/to/kconfig"
|
|
```
|
|
|
|
#### sources.kernel.configOpts
|
|
|
|
Kernel configuration options to publish as feature labels.
|
|
|
|
Default: `[NO_HZ, NO_HZ_IDLE, NO_HZ_FULL, PREEMPT]`
|
|
|
|
Example:
|
|
|
|
```yaml
|
|
sources:
|
|
kernel:
|
|
configOpts: [NO_HZ, X86, DMI]
|
|
```
|
|
|
|
### sources.local
|
|
|
|
### sources.local.hooksEnabled
|
|
|
|
**DEPRECATED**: Hooks are DEPRECATED since v0.12.0 release and support (and
|
|
this configuration option) will be removed in NFD v0.17. Use
|
|
[feature files](../usage//customization-guide.md#feature-files) instead.
|
|
|
|
Configuration option to disable/enable hooks execution. Disabled by default.
|
|
|
|
> **NOTE:** The default NFD container image only supports statically linked
|
|
> binaries. Use the [full](../deployment/image-variants.md#full) image variant
|
|
> for a slightly more extensive environment that additionally supports bash and
|
|
> perl runtimes.
|
|
|
|
GitHub tracking issue:
|
|
[Drop support for hooks (#856)](https://github.com/kubernetes-sigs/node-feature-discovery/issues/856).
|
|
|
|
Default: false
|
|
|
|
Example:
|
|
|
|
```yaml
|
|
sources:
|
|
local:
|
|
hooksEnabled: true
|
|
```
|
|
|
|
### sources.pci
|
|
|
|
#### sources.pci.deviceClassWhitelist
|
|
|
|
List of PCI [device class](https://pci-ids.ucw.cz/read/PD) IDs for which to
|
|
publish a label. Can be specified as a main class only (e.g. `03`) or full
|
|
class-subclass combination (e.g. `0300`) - the former implies that all
|
|
subclasses are accepted. The format of the labels can be further configured
|
|
with [deviceLabelFields](#sources.pci.deviceLabelFields).
|
|
|
|
Default: `["03", "0b40", "12"]`
|
|
|
|
Example:
|
|
|
|
```yaml
|
|
sources:
|
|
pci:
|
|
deviceClassWhitelist: ["0200", "03"]
|
|
```
|
|
|
|
#### sources.pci.deviceLabelFields
|
|
|
|
The set of PCI ID fields to use when constructing the name of the feature
|
|
label. Valid fields are `class`, `vendor`, `device`, `subsystem_vendor` and
|
|
`subsystem_device`.
|
|
|
|
Default: `[class, vendor]`
|
|
|
|
Example:
|
|
|
|
```yaml
|
|
sources:
|
|
pci:
|
|
deviceLabelFields: [class, vendor, device]
|
|
```
|
|
|
|
With the example config above NFD would publish labels like:
|
|
`feature.node.kubernetes.io/pci-<class-id>_<vendor-id>_<device-id>.present=true`
|
|
|
|
### sources.usb
|
|
|
|
#### sources.usb.deviceClassWhitelist
|
|
|
|
List of USB [device class](https://www.usb.org/defined-class-codes) IDs for
|
|
which to publish a feature label. The format of the labels can be further
|
|
configured with [deviceLabelFields](#sources.usb.deviceLabelFields).
|
|
|
|
Default: `["0e", "ef", "fe", "ff"]`
|
|
|
|
Example:
|
|
|
|
```yaml
|
|
sources:
|
|
usb:
|
|
deviceClassWhitelist: ["ef", "ff"]
|
|
```
|
|
|
|
#### sources.usb.deviceLabelFields
|
|
|
|
The set of USB ID fields from which to compose the name of the feature label.
|
|
Valid fields are `class`, `vendor`, `device` and `serial`.
|
|
|
|
Default: `[class, vendor, device]`
|
|
|
|
Example:
|
|
|
|
```yaml
|
|
sources:
|
|
pci:
|
|
deviceLabelFields: [class, vendor]
|
|
```
|
|
|
|
With the example config above NFD would publish labels like:
|
|
`feature.node.kubernetes.io/usb-<class-id>_<vendor-id>.present=true`
|
|
|
|
### sources.custom
|
|
|
|
List of rules to process in the custom feature source to create user-specific
|
|
labels. Refer to the documentation of the
|
|
[custom feature source](../usage/customization-guide.md#custom-feature-source) for
|
|
details of the available rules and their configuration.
|
|
|
|
Default: *empty*
|
|
|
|
Example:
|
|
|
|
```yaml
|
|
sources:
|
|
custom:
|
|
- name: "my custom rule"
|
|
labels:
|
|
my-custom-feature: "true"
|
|
matchFeatures:
|
|
- feature: kernel.loadedmodule
|
|
matchExpressions:
|
|
e1000e: {op: Exists}
|
|
- feature: pci.device
|
|
matchExpressions:
|
|
class: {op: In, value: ["0200"]}
|
|
vendor: {op: In, value: ["8086"]}
|
|
```
|