4.15. 内核模块的自定义升级


如果需要,使用此流程在节点上运行维护操作时升级内核模块,包括重新引导节点。要最小化对集群中运行的工作负载的影响,请按顺序运行内核升级过程,一次一个节点。

注意

此流程需要了解使用内核模块的工作负载,且必须由集群管理员管理。

先决条件

  • 在升级前,在内核模块使用的所有节点上设置 kmm.node.kubernetes.io/version-module.<module_namespace>.<module_name>=$moduleVersion 标签。
  • 终止节点上的所有用户应用程序工作负载,或将其移至另一节点。
  • 卸载当前载入的内核模块。
  • 在内核模块卸载前,确保用户工作负载(在访问内核模块的集群中运行的应用程序)在载入新内核模块版本后不会在节点上运行,且工作负载在载入了新的内核模块版本后在该节点上运行。

流程

  1. 确保节点上由 KMM 管理的设备插件已被卸载。
  2. 更新 Module 自定义资源(CR)中的以下字段:

    • containerImage (到适当的内核版本)
    • version

      更新应当具有原子性,即 containerImageversion 字段必须同时更新。

  3. 使用升级的节点上的内核模块终止任何工作负载。
  4. 删除节点上的 kmm.node.kubernetes.io/version-module.<module_namespace>.<module_name> 标签。运行以下命令从节点卸载内核模块:

    $ oc label node/<node_name> kmm.node.kubernetes.io/version-module.<module_namespace>.<module_name>-
    Copy to Clipboard Toggle word wrap
  5. 如果需要,作为集群管理员,在内核模块升级的节点上执行任何额外的维护。

    如果没有额外的升级,您可以通过将 kmm.node.kubernetes.io/version-module.<module_namespace>.<module_name> 标签值更新为新的 $moduleVersion(如 Module 中的设置),并跳过第 3 到 6 步。

  6. 运行以下命令,将 kmm.node.kubernetes.io/version-module.<module_namespace>.<module_name>=$moduleVersion 标签添加到节点。$moduleVersion 必须与 Module CR 中的 version 字段的新值相等。

    $ oc label node/<node_name> kmm.node.kubernetes.io/version-module.<module_namespace>.<module_name>=<desired_version>
    Copy to Clipboard Toggle word wrap
    注意

    由于标签名称中的 Kubernetes 限制,Module 名称和命名空间的组合长度不能超过 39 个字符。

  7. 恢复该节点上利用内核模块的任何工作负载。
  8. 重新加载节点上由 KMM 管理的设备插件。
返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat