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
# For ARM64 image:
$ oc adm release info quay.io/openshift-release-dev/ocp-release:4.19.0-aarch64 --image-for=driver-toolkit
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
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
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2026 Red Hat
返回顶部