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.2.3. 使用 Driver Toolkit
例如,Driver Toolkit 可用作基础镜像来构建非常简单的内核模块,名为 simple-kmod。
Driver Toolkit 包含为内核模块签名所需的依赖项、openssl、mokutil 和 keyutils。但是,在这个示例中,simple-kmod 内核模块没有签名,因此无法在启用了安全引导(Secure Boot)的系统中载入。
2.3.1. 在集群中构建并运行 simple-kmod 驱动程序容器 复制链接链接已复制到粘贴板!
先决条件
- 有一个正在运行的 OpenShift Container Platform 集群。
-
您可以将集群的 Image Registry Operator 状态设置为
Managed。 -
已安装 OpenShift CLI(
oc)。 -
以具有
cluster-admin权限的用户身份登录 OpenShift CLI。
流程
创建命名空间。例如:
oc new-project simple-kmod-demo
$ oc new-project simple-kmod-demo
YAML 定义了
ImageStream,用于存储simple-kmod驱动程序容器镜像,以及用于构建容器的BuildConfig。将此 YAML 保存为0000-buildconfig.yaml.template。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在以下命令中,使用您运行的 OpenShift Container Platform 版本的相关的正确 driver toolki 镜像替换 "DRIVER_TOOLKIT_IMAGE" 部分。
OCP_VERSION=$(oc get clusterversion/version -ojsonpath={.status.desired.version})$ OCP_VERSION=$(oc get clusterversion/version -ojsonpath={.status.desired.version})Copy to Clipboard Copied! Toggle word wrap Toggle overflow DRIVER_TOOLKIT_IMAGE=$(oc adm release info $OCP_VERSION --image-for=driver-toolkit)
$ DRIVER_TOOLKIT_IMAGE=$(oc adm release info $OCP_VERSION --image-for=driver-toolkit)Copy to Clipboard Copied! Toggle word wrap Toggle overflow sed "s#DRIVER_TOOLKIT_IMAGE#${DRIVER_TOOLKIT_IMAGE}#" 0000-buildconfig.yaml.template > 0000-buildconfig.yaml$ sed "s#DRIVER_TOOLKIT_IMAGE#${DRIVER_TOOLKIT_IMAGE}#" 0000-buildconfig.yaml.template > 0000-buildconfig.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用创建镜像流和构建配置
oc create -f 0000-buildconfig.yaml
$ oc create -f 0000-buildconfig.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 构建器 Pod 成功完成后,将驱动程序容器镜像部署为
DaemonSet。驱动程序容器必须使用特权安全上下文运行,才能在主机上加载内核模块。以下 YAML 文件包含用于运行驱动程序容器的 RBAC 规则和
DaemonSet。将此 YAML 保存为1000-drivercontainer.yaml。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 RBAC 规则和守护进程集:
oc create -f 1000-drivercontainer.yaml
$ oc create -f 1000-drivercontainer.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
当 pod 在 worker 节点上运行后,使用
lsmod验证在主机机器上是否成功载入了simple_kmod内核模块。验证 pod 是否正在运行:
oc get pod -n simple-kmod-demo
$ oc get pod -n simple-kmod-demoCopy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE simple-kmod-driver-build-1-build 0/1 Completed 0 6m simple-kmod-driver-container-b22fd 1/1 Running 0 40s simple-kmod-driver-container-jz9vn 1/1 Running 0 40s simple-kmod-driver-container-p45cc 1/1 Running 0 40s
NAME READY STATUS RESTARTS AGE simple-kmod-driver-build-1-build 0/1 Completed 0 6m simple-kmod-driver-container-b22fd 1/1 Running 0 40s simple-kmod-driver-container-jz9vn 1/1 Running 0 40s simple-kmod-driver-container-p45cc 1/1 Running 0 40sCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在驱动程序容器 pod 中执行
lsmod命令:oc exec -it pod/simple-kmod-driver-container-p45cc -- lsmod | grep simple
$ oc exec -it pod/simple-kmod-driver-container-p45cc -- 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