首先来看main.go中的main函数,和上一个nvidia-device-pluhin
中的差不多,先是使用cli实现了一个命令行的功能
main
下面来看一下flags
名称 | 类型 | 作用 |
---|---|---|
mig-strategy | StringFlag | 在支持 MIG 设备的 GPU 上公开 MIG 设备所需的策略[none |single |mixed] |
fail-on-init-error | BoolFlag | 如果在初始化过程中遇到错误,则使插件失效,否则无限阻塞 |
oneshot | BoolFlag | 标记一次并退出 |
no-timestamp | BoolFlag | 不要将时间戳添加到标签中 |
sleep-interval | DurationFlag | 标记之间的休眠时间 |
output-file | StringFlag | 定义了输出文件的路径/etc/kubernetes/node-feature-discovery/features.d/gfd |
machine-type-file | StringFlag | 包含节点的 DMI (SMBIOS) 信息的文件的路径 |
config-file | StringFlag | 配置文件的路径,作为命令行选项或环境变量的替代方法 |
use-node-feature-api | BoolFlag | 使用 NFD NodeFeature API 发布标签 |
start
首先创建了OSWatcher来监听系统信号,不过这里创建OSWatcher的函数和nvidia-device-plugin
中的是一样的。然后和上一个差不多,加载配置文件,打印配置信息最后使用配置信息创建resourceManger
run
func run(manager resource.Manager, vgpu vgpu.Interface, config *spec.Config, sigs chan os.Signal) (bool, error)
实现了生成标签等
removeOutputFile
func removeOutputFile(path string) error
删除path和path/gfd-tmpd的所有文件
1 |
|