搜索

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

download PDF

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

注意

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

先决条件

  • 在升级前,在内核模块使用的所有节点上设置 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>-
  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>
    注意

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

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

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.