4.4. 使用 ModuleLoader 镜像
内核模块管理 (KMM) 可以与专用的模块加载程序镜像一起工作。这些是必须满足以下要求的标准 OCI 镜像:
-
.ko
文件必须位于/opt/lib/modules/${KERNEL_VERSION}
中。 -
modprobe
和sleep
二进制文件必须在$PATH
变量中定义。
4.4.1. 运行 depmod 复制链接链接已复制到粘贴板!
如果您的模块加载程序镜像包含多个内核模块,如果其中一个模块依赖于另一个模块,则最好在构建过程结束时运行 depmod
来生成依赖项和映射文件。
您必须有一个红帽订阅才能下载 kernel-devel
软件包。
流程
-
要为特定内核版本生成
modules.dep
和.map
文件,请运行depmod -b /opt ${KERNEL_VERSION}
。
4.4.1.1. Dockerfile 示例 复制链接链接已复制到粘贴板!
如果要在 OpenShift Container Platform 上构建镜像,请考虑使用 Driver Tool Kit (DTK)。
如需更多信息,请参阅使用授权构建。
4.4.2. 在集群中构建 复制链接链接已复制到粘贴板!
KMM 可以在集群中构建模块加载程序镜像。按照以下准则:
-
使用内核映射的
build
部分提供构建说明。 -
将容器镜像的 Dockerfile 复制到
dockerfile
键下的ConfigMap
资源中。 -
确保
ConfigMap
位于与Module
相同的命名空间中。
KMM 检查 containerImage
字段中指定的镜像名称是否存在。如果存在,则会跳过构建。
否则,KMM 创建一个 Build
资源来构建您的镜像。构建镜像后,KMM 继续进行 Module
协调。请参见以下示例。
- 1
- 可选。
- 2
- 可选。
- 3
- 将以
/run/secrets/some-kubernetes-secret
的形式挂载到构建 Pod 中。 - 4
- 可选:避免使用此参数。如果设置为
true
,则允许构建使用普通 HTTP 在 DockerfileFROM
指令中拉取镜像。 - 5
- 可选:避免使用此参数。如果设置为
true
,构建将在使用普通 HTTP 在 DockerfileFROM
指令中拉取镜像时跳过任何 TLS 服务器证书验证。 - 6
- 必需。
- 7
- 可选:避免使用此参数。如果设置为
true
,则允许 KMM 检查容器镜像是否已使用普通 HTTP。 - 8
- 可选:避免使用此参数。如果设置为
true
,KMM 会在检查容器镜像是否已存在时跳过任何 TLS 服务器证书验证。
4.4.3. 使用 Driver Toolkit 复制链接链接已复制到粘贴板!
Driver Toolkit (DTK) 是一个便捷的基础镜像,用于构建构建模块加载程序镜像。它包含集群中当前运行的 OpenShift 版本的工具和库。
流程
使用 DTK 作为多阶段 Dockerfile 的第一个阶段。
- 构建内核模块。
-
将
.ko
文件复制到较小的最终用户镜像中,如ubi-minimal
。 要在集群内构建中使用 DTK,请使用
DTK_AUTO
构建参数。在创建Build
资源时,该值由 KMM 自动设置。请参见以下示例。Copy to Clipboard Copied! Toggle word wrap Toggle overflow