2.3. preflight 验证内核模块管理 (KMM) 模块


在应用 KMM 模块的集群中执行升级前,您需要在集群升级和可能的内核升级后验证使用 KMM 安装的内核模块是否可以在节点上安装。preflight 会尝试并行验证集群中载入的每个模块。在启动一个模块的验证前,preflight 并不会等待一个模块的验证过程完成。

2.3.1. 启动验证

preflight 验证通过在集群中创建 PreflightValidationOCP 资源来触发。此资源包含以下字段:

dtkImage

为特定 OpenShift Container Platform 版本发布的 DTK 容器镜像。如果没有设置这个值,则无法使用 DTK_AUTO 功能。

您可以在集群中运行以下任一命令来获取镜像:

# For x86_64 image:
$ oc adm release info quay.io/openshift-release-dev/ocp-release:4.19.0-x86_64 --image-for=driver-toolkit
Copy to Clipboard Toggle word wrap
# For ARM64 image:
$ oc adm release info quay.io/openshift-release-dev/ocp-release:4.19.0-aarch64 --image-for=driver-toolkit
Copy to Clipboard Toggle word wrap
kernelVersion

提供集群要升级到的内核版本的必填字段。

您可以在集群中运行以下命令来获取版本:

$ podman run -it --rm $(oc adm release info quay.io/openshift-release-dev/ocp-release:4.19.0-x86_64 --image-for=driver-toolkit) cat /etc/driver-toolkit-release.json
Copy to Clipboard Toggle word wrap
pushBuiltImage
如果为 true,则构建期间创建的镜像和签名验证将被推送到其存储库。此字段默认为 false

2.3.2. 验证生命周期

preflight 验证会尝试验证集群中载入的每个模块。在验证成功后,preflight 会停止在 Module 资源上运行验证。如果模块验证失败,您可以更改模块定义,并在下一个循环中再次验证模块。

如果要为附加内核运行 Preflight 验证,则应该为该内核创建另一个 PreflightValidationOCP 资源。验证所有模块后,建议删除 PreflightValidationOCP 资源。

2.3.3. 验证状态

PreflightValidationOCP 资源报告集群中尝试或试图在 .status.modules 列表中验证的每个模块的状态和进度。该列表的元素包含以下字段:

name
Module 资源的名称。
namespace
Module 资源的命名空间。
statusReason
有关状态的动词说明。
verificationStage

描述正在执行的验证阶段:

  • Image :镜像存在验证
  • Done :验证已完成
verificationStatus

模块验证的状态:

  • Success :验证
  • Failure :验证失败
  • InProgress: 验证正在进行

2.3.4. 镜像验证阶段

镜像验证始终是要执行的 preflight 验证的第一个阶段。如果镜像验证成功,则不会在该特定模块上运行其他验证。Operator 使用容器运行时检查模块中 updad 内核的镜像是否存在和可访问性。

如果镜像验证失败,且模块中有与升级的内核相关的 build/sign 部分,控制器会尝试构建或签署镜像。如果在 PreflightValidationOCP 资源中定义了 PushBuiltImage 标志,控制器也会尝试将生成的镜像推送到其存储库中。生成的镜像名称取自 Module CR 的 containerImage 字段的定义。

注意

如果存在 build 部分,则 sign 部分中的输入镜像将用作 build 部分的输出镜像。因此,为了使输入镜像可用于 sign 部分,必须在 PreflightValidationOCP CR 中定义 PushBuiltImage 标志。

2.3.5. PreflightValidationOCP 资源示例

以下示例显示了 YAML 格式的 PreflightValidationOCP 资源。

这个示例根据即将推出的 5.14.0-570.19.1.el9_6.x86_64 内核验证当前存在的模块。由于 .spec.pushBuiltImage 设置为 true,KMM 会将生成的 Build/Sign 镜像推送到定义的存储库中。

apiVersion: kmm.sigs.x-k8s.io/v1beta2
kind: PreflightValidationOCP
metadata:
  name: preflight
spec:
  kernelVersion: 5.14.0-570.19.1.el9_6.x86_64
  dtkImage: quay.io/openshift-release-dev/ocp-v4.0-art-dev@sha256:fe0322730440f1cbe6fffaaa8cac131b56574bec8abe3ec5b462e17557fecb32
  pushBuiltImage: true
Copy to Clipboard Toggle word wrap
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2025 Red Hat