3.3. 配置 Node Feature Discovery Operator
3.3.1. core
core
部分包含不特定于任何特定功能源的常见配置设置。
core.sleepInterval
core.sleepInterval
指定连续通过功能检测或重新检测之间的间隔,还可指定节点重新标记之间的间隔。非正数值意味着睡眠间隔无限 ; 不进行重新检测或重新标记。
如果指定,这个值会被弃用的 --sleep-interval
命令行标志覆盖。
用法示例
core:
sleepInterval: 60s 1
默认值为 60s
。
core.sources
core.sources
指定启用的功能源列表。特殊值 all
可启用所有功能源。
如果指定,这个值会被弃用的 --sources
命令行标志覆盖。
默认:[all]
用法示例
core: sources: - system - custom
core.labelWhiteList
core.labelWhiteList
根据标签名称指定用于过滤功能标签的正则表达式。不匹配的标签将不会被发布。
正则表达式仅与标签的 basename 部分("/"后的名称部分)进行匹配。标签前缀或命名空间会被省略。
如果指定,这个值会被弃用的 --label-whitelist
命令行标志覆盖。
默认: null
用法示例
core: labelWhiteList: '^cpu-cpuid'
core.noPublish
将 core.noPublish
设置为 true
可禁用与 nfd-master
的所有通信。它实际上是一个空运行标记; nfd-worker
会正常运行功能检测,但不会向 nfd-master
发送实际的标记请求。
如果指定,--no-publish
命令行标志会覆盖这个值。
例如:
用法示例
core:
noPublish: true 1
默认值为 false
。
core.klog
以下选项指定日志记录器配置,其中大多数可以在运行时动态调整。
日志记录器选项也可以使用命令行标志来指定,其优先级高于任何对应的配置文件选项。
core.klog.addDirHeader
如果设置为 true
,core.klog.addDirHeader
将文件目录添加到日志消息的标头中。
默认:false
运行时可配置:是
core.klog.alsologtostderr
将日志信息输出到标准错误以及文件。
默认:false
运行时可配置:是
core.klog.logBacktraceAt
当日志记录达到行 file:N 时,触发堆栈跟踪功能。
默认: 空
运行时可配置:是
core.klog.logDir
如果非空,在此目录中写入日志文件。
默认: 空
运行是时配置:否
core.klog.logFile
如果不为空,则使用此日志文件。
默认: 空
运行是时配置:否
core.klog.logFileMaxSize
core.klog.logFileMaxSize
定义日志文件可增大的最大大小。单位是 MB。如果值为 0
,则最大文件大小没有限制。
默认: 1800
运行是时配置:否
core.klog.logtostderr
将日志信息输出到标准错误而不是文件
默认: true
运行时可配置:是
core.klog.skipHeaders
如果 core.klog.skipHeaders
设为 true
,忽略日志消息中的标头前缀。
默认:false
运行时可配置:是
core.klog.skipLogHeaders
如果 core.klog.skipLogHeaders
设为 true
,在打开日志文件时忽略标头。
默认:false
运行是时配置:否
core.klog.stderrthreshold
处于或超过此阈值的日志输出到 stderr。
默认: 2
运行时可配置:是
core.klog.v
core.klog.v
是日志级别详细程度的值。
默认: 0
运行时可配置:是
core.klog.vmodule
core.klog.vmodule
是文件过滤日志的、以逗号分隔的 pattern=N
设置列表。
默认: 空
运行时可配置:是
3.3.2. sources
sources
部分包含特定于功能源的配置参数。
sources.cpu.cpuid.attributeBlacklist
防止发布此选项中列出的 cpuid
功能。
如果指定,则 source.cpu.cpuid.attributeWhitelist
将覆盖这个值。
默认:[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]
用法示例
sources: cpu: cpuid: attributeBlacklist: [MMX, MMXEXT]
sources.cpu.cpuid.attributeWhitelist
仅发布在此选项中列出的 cpuid
功能。
source.cpu.cpuid.attributeWhitelist
优先于 source.cpu.cpuid.attributeBlacklist
。
默认: 空
用法示例
sources: cpu: cpuid: attributeWhitelist: [AVX512BW, AVX512CD, AVX512DQ, AVX512F, AVX512VL]
sources.kernel.kconfigFile
source.kernel.kconfigFile
是内核配置文件的路径。如果为空,NFD 会在已知的标准位置运行搜索。
默认: 空
用法示例
sources: kernel: kconfigFile: "/path/to/kconfig"
sources.kernel.configOpts
sources.kernel.configOpts
代表内核配置选项,作为功能标签发布。
默认:[NO_HZ, NO_HZ_IDLE, NO_HZ_FULL, PREEMPT]
用法示例
sources: kernel: configOpts: [NO_HZ, X86, DMI]
sources.pci.deviceClassWhitelist
sources.pci.deviceClassWhitelist
是用来发布标签的 PCI 设备类 ID 列表。它只能指定为主类(例如 03
)或全类子类组合(例如 0300
)。前者表示接受所有子类。可以使用 deviceLabelFields
进一步配置标签格式。
默认: ["03", "0b40", "12"]
用法示例
sources: pci: deviceClassWhitelist: ["0200", "03"]
sources.pci.deviceLabelFields
sources.pci.deviceLabelFields
是构建功能标签名称时要使用的 PCI ID 字段集合。有效字段包括 class
、vendor
、device
、subsystem_vendor
和 subsystem_device
。
默认: [class, vendor]
用法示例
sources: pci: deviceLabelFields: [class, vendor, device]
在上例配置中,NFD 会发布标签,如 feature.node.kubernetes.io/pci-<class-id>_<vendor-id>_<device-id>.present=true
sources.usb.deviceClassWhitelist
sources.usb.deviceClassWhitelist
是一个 USB 设备类 ID 列表,用于发布功能标签。可以使用 deviceLabelFields
进一步配置标签格式。
默认: ["0e", "ef", "fe", "ff"]
用法示例
sources: usb: deviceClassWhitelist: ["ef", "ff"]
sources.usb.deviceLabelFields
sources.usb.deviceLabelFields
是一组 USB ID 字段,用于编写功能标签的名称。有效字段包括 class
、vendor
和 device
。
默认: [class、vendor、device]
用法示例
sources: pci: deviceLabelFields: [class, vendor]
使用上面的示例配置,NFD 会发布类似如下标签: feature.node.kubernetes.io/usb-<class-id>_<vendor-id>.present=true
。
sources.custom
sources.custom
是在自定义功能源中处理的规则列表,用于创建特定于用户的标签。
默认: 空
用法示例
source: custom: - name: "my.custom.feature" matchOn: - loadedKMod: ["e1000e"] - pciId: class: ["0200"] vendor: ["8086"]