$ RUN depmod -b /opt ${KERNEL_VERSION}
在对应用了 KMM 模块的集群执行升级之前,必须验证使用 KMM 安装的内核模块是否能够在集群升级和可能的内核升级后安装到节点上。预检尝试并行验证集群中加载的每个Module
。预检不会等待一个Module
的验证完成,然后再开始另一个Module
的验证。
预检验证是通过在集群中创建PreflightValidationOCP
资源触发的。此规范包含两个字段
releaseImage
必填字段,提供集群升级到的 OpenShift Container Platform 版本的发布镜像名称。
pushBuiltImage
如果为true
,则在构建和签名验证期间创建的镜像将推送到其存储库。此字段默认为false
。
预检验证尝试验证集群中加载的每个模块。预检在验证成功后停止对Module
资源运行验证。如果模块验证失败,您可以更改模块定义,预检将在下一个循环中再次尝试验证模块。
如果要为其他内核运行预检验证,则应为该内核创建另一个PreflightValidationOCP
资源。所有模块都经过验证后,建议删除PreflightValidationOCP
资源。
PreflightValidationOCP
资源在其.status.modules
列表中报告它尝试或已尝试验证的集群中每个模块的状态和进度。该列表的元素包含以下字段
lastTransitionTime
Module
资源状态从一种状态转换到另一种状态的最后时间。这应该是底层状态发生变化的时候。如果不知道这一点,则可以使用 API 字段更改的时间。
name
Module
资源的名称。
命名空间
Module
资源的命名空间。
statusReason
关于状态的文字说明。
verificationStage
描述正在执行的验证阶段
image
:镜像存在性验证
build
:构建过程验证
sign
:签名过程验证
verificationStatus
Module 验证的状态
true
:已验证
false
:验证失败
error
:验证过程中出错
unknown
:验证尚未开始
预检对集群中存在的每个KMM Module运行以下验证
镜像验证阶段
构建验证阶段
签名验证阶段
镜像验证始终是预检验证的第一个执行阶段。如果镜像验证成功,则不会对该特定模块运行其他验证。
镜像验证包括两个阶段
镜像存在性和可访问性。代码尝试访问模块中为升级内核定义的镜像并获取其清单。
验证Module
中定义的内核模块是否存在于正确的路径中,以便将来执行modprobe
。如果此验证成功,则可能意味着内核模块是用正确的Linux头文件编译的。正确的路径是<dirname>/lib/modules/<upgraded_kernel>/
。
仅当镜像验证失败且Module
中存在与升级内核相关的build
部分时,才会执行构建验证。构建验证尝试运行构建作业并验证其是否成功完成。
运行
|
如果在PreflightValidationOCP
自定义资源 (CR) 中定义了PushBuiltImage
标志,它还会尝试将生成的镜像推送到其存储库。生成的镜像名称取自Module
CR 的containerImage
字段的定义。
如果为升级的内核定义了 |
仅当镜像验证失败时才执行签名验证。Module
资源中存在与升级内核相关的sign
部分,并且如果Module
中存在与升级内核相关的build
部分,则构建验证成功完成。签名验证尝试运行签名作业并验证其是否成功完成。
如果在PreflightValidationOCP
CR 中定义了PushBuiltImage
标志,签名验证还会尝试将生成的镜像推送到其注册表。生成的镜像始终是Module
的ContainerImage
字段中定义的镜像。输入镜像要么是构建阶段的输出,要么是UnsignedImage
字段中定义的镜像。
如果存在 |
本节显示了YAML格式的PreflightValidationOCP
资源示例。
此示例针对包含在OpenShift Container Platform 4.11.18版本中的即将发布的内核版本验证所有当前存在的模块,以下发行版镜像指向该版本
quay.io/openshift-release-dev/ocp-release@sha256:22e149142517dfccb47be828f012659b1ccf71d26620e6f62468c264a7ce7863
因为.spec.pushBuiltImage
设置为true
,所以KMM会将构建/签名的结果镜像推送到定义的存储库。
apiVersion: kmm.sigs.x-k8s.io/v1beta2
kind: PreflightValidationOCP
metadata:
name: preflight
spec:
releaseImage: quay.io/openshift-release-dev/ocp-release@sha256:22e149142517dfccb47be828f012659b1ccf71d26620e6f62468c264a7ce7863
pushBuiltImage: true