This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.3.3. 使用特殊资源 Operator
特殊资源 Operator (SRO) 用于管理驱动程序容器的构建和部署。构建和部署容器所需的对象可以在 Helm Chart 中定义。
本节中的示例使用 simple-kmod SpecialResource 对象来指向所创建的 ConfigMap 对象来存储 Helm chart。
3.3.1. 使用配置映射构建并运行 simple-kmod SpecialResource 复制链接链接已复制到粘贴板!
在本例中,simple-kmod 内核模块用于显示 SRO 如何管理存储在配置映射中的 Helm Chart 模板中的驱动程序容器。
先决条件
- 有一个正在运行的 OpenShift Container Platform 集群。
-
您可以将集群的 Image Registry Operator 状态设置为
Managed。 -
已安装 OpenShift CLI(
oc)。 -
以具有
cluster-admin权限的用户身份登录 OpenShift CLI。 - 已安装 Node Feature Discovery (NFD) Operator。
- 已安装特殊 Resource Operator。
-
已安装 Helm CLI (
helm)。
流程
要创建 simple-kmod
SpecialResource对象,请定义用于构建镜像的镜像流和构建配置,以及用于运行容器的服务帐户、角色、角色绑定和守护进程集。需要服务帐户、角色和角色绑定来运行具有特权安全上下文的守护进程集,以便加载内核模块。创建
templates目录,并更改到此目录:mkdir -p chart/simple-kmod-0.0.1/templates
$ mkdir -p chart/simple-kmod-0.0.1/templatesCopy to Clipboard Copied! Toggle word wrap Toggle overflow cd chart/simple-kmod-0.0.1/templates
$ cd chart/simple-kmod-0.0.1/templatesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将镜像流和构建配置的 YAML 模板保存到
templates目录中的0000-buildconfig.yaml中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
templates目录中的 RBAC 资源和守护进程设置的以下 YAML 模板保存为1000-driver-container.yaml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进入
chart/simple-kmod-0.0.1目录:cd ..
$ cd ..Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
chart/simple-kmod-0.0.1目录中,将 Chart 的以下 YAML 保存为Chart.yaml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
在
Chart目录中,使用helm package命令创建 chart:helm package simple-kmod-0.0.1/
$ helm package simple-kmod-0.0.1/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Successfully packaged chart and saved it to: /data/<username>/git/<github_username>/special-resource-operator/yaml-for-docs/chart/simple-kmod-0.0.1/simple-kmod-0.0.1.tgz
Successfully packaged chart and saved it to: /data/<username>/git/<github_username>/special-resource-operator/yaml-for-docs/chart/simple-kmod-0.0.1/simple-kmod-0.0.1.tgzCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建配置映射以存储 chart 文件:
为配置映射文件创建目录:
mkdir cm
$ mkdir cmCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 Helm Chart 复制到
cm目录中:cp simple-kmod-0.0.1.tgz cm/simple-kmod-0.0.1.tgz
$ cp simple-kmod-0.0.1.tgz cm/simple-kmod-0.0.1.tgzCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建一个索引文件,指定包含 Helm Chart 的 Helm 仓库:
helm repo index cm --url=cm://simple-kmod/simple-kmod-chart
$ helm repo index cm --url=cm://simple-kmod/simple-kmod-chartCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为 Helm Chart 中定义的对象创建一个命名空间:
oc create namespace simple-kmod
$ oc create namespace simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建配置映射对象:
oc create cm simple-kmod-chart --from-file=cm/index.yaml --from-file=cm/simple-kmod-0.0.1.tgz -n simple-kmod
$ oc create cm simple-kmod-chart --from-file=cm/index.yaml --from-file=cm/simple-kmod-0.0.1.tgz -n simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow
使用以下
SpecialResource清单,使用您在配置映射中创建的 Helm Chart 部署 simple-kmod 对象。将此 YAML 保存为simple-kmod-configmap.yaml:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在命令行中创建
SpecialResource文件:oc create -f simple-kmod-configmap.yaml
$ oc create -f simple-kmod-configmap.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow simple-kmod资源部署在simple-kmod命名空间中,如对象清单中指定的。片刻之后,simple-kmod驱动程序容器的构建 pod 开始运行。构建在几分钟后完成,然后驱动程序容器容器集开始运行。使用
oc get pods命令显示构建 pod 的状态:oc get pods -n simple-kmod
$ oc get pods -n simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE simple-kmod-driver-build-12813789169ac0ee-1-build 0/1 Completed 0 7m12s simple-kmod-driver-container-12813789169ac0ee-mjsnh 1/1 Running 0 8m2s simple-kmod-driver-container-12813789169ac0ee-qtkff 1/1 Running 0 8m2s
NAME READY STATUS RESTARTS AGE simple-kmod-driver-build-12813789169ac0ee-1-build 0/1 Completed 0 7m12s simple-kmod-driver-container-12813789169ac0ee-mjsnh 1/1 Running 0 8m2s simple-kmod-driver-container-12813789169ac0ee-qtkff 1/1 Running 0 8m2sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
oc logs命令以及从上述oc get pods命令获取的构建 pod 名称,以显示 simple-kmod 驱动程序容器镜像构建的日志:oc logs pod/simple-kmod-driver-build-12813789169ac0ee-1-build -n simple-kmod
$ oc logs pod/simple-kmod-driver-build-12813789169ac0ee-1-build -n simple-kmodCopy to Clipboard Copied! Toggle word wrap Toggle overflow 要验证是否载入了 simple-kmod 内核模块,请在上面的
oc get pods命令返回的一个驱动程序容器 pod 中执行lsmod命令:oc exec -n simple-kmod -it pod/simple-kmod-driver-container-12813789169ac0ee-mjsnh -- lsmod | grep simple
$ oc exec -n simple-kmod -it pod/simple-kmod-driver-container-12813789169ac0ee-mjsnh -- lsmod | grep simpleCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
simple_procfs_kmod 16384 0 simple_kmod 16384 0
simple_procfs_kmod 16384 0 simple_kmod 16384 0Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果要从节点中删除 simple-kmod 内核模块,请使用 oc delete 命令删除 simple-kmod SpecialResource API 对象。删除驱动程序容器 pod 时,内核模块会被卸载。