本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

升级生命周期

升级流程

组件

SUSE® Rancher Prime: OS Manager Operator支持在集群级别配置操作系统版本的几种方式。
每当定义一个新的 ManagedOSIMage 时,相关的 Fleet Bundle 也会由 SUSE® Rancher Prime: OS Manager Operator 生成。

在此上下文中,Fleet用于在 目标的每个集群上应用 upgrade.cattle.io/v1 Plan ManagedOSImage
然后由在下游 Plan 集群上运行的 System Upgrade Controller 执行 SUSE® Rancher Prime: OS Manager。

系统升级控制器是 K3sRKE2 集群使用的升级工具。它应该始终在每个配置的 SUSE® Rancher Prime: OS Manager 集群上自动安装。在此上下文中,系统升级控制器协调将 upgrade.cattle.io/v1 Plan 应用到 SUSE® Rancher Prime: OS Manager 节点。

版本控制和组件生命周期

Fleet系统升级控制器 的版本由 Rancher 控制。

在 Rancher 集群上,您可以运行:

kubectl get settings fleet-version system-upgrade-controller-chart-version

有关图表版本的更多信息,您可以访问 储存库 或阅读 文档

图表版本由 Rancher 确定。
根据 Rancher 的安装方式,可以设置以下环境变量,例如在安装 Rancher Helm 图表 时:

CATTLE_SYSTEM_UPGRADE_CONTROLLER_CHART_VERSION
CATTLE_FLEET_VERSION

通常不建议手动更新版本。
还要注意,新的 CATTLE_SYSTEM_UPGRADE_CONTROLLER_CHART_VERSION 将在所有配置的下游集群上触发 system-upgrade-controller 图表更新。

验证成功的升级

验证升级作业的正确执行是确保 SUSE® Rancher Prime: OS Manager 升级过程完成的基本部分。

要排查整个升级过程中的每一步,请参考相关文档
本节仅描述验证升级计划在一个目标集群上正确应用所需的最后一步。

  • 版本高于或等于*v0.13.4*的`system-upgrade-controller`:

    kubectl -n cattle-system describe plan os-upgrader-my-upgrade

    一旦计划应用于所有节点,它将具有`Complete`状态条件。

  • 旧版本:

    每个计划都有一个`latestHash`状态值,应与每个节点上的计划标签匹配。
    可以使用一个简单的脚本列出所有尚未应用该计划的节点:

    #!/bin/bash
    
    # This script prints a list of all nodes where an upgrade plan was not applied.
    # To further determine the cause of failures, you can analyze the Plan status and the related jobs.
    # For ex: kubectl -n cattle-system get plans,jobs
    
    # Edit this variable according to your ManagedOSImage name.
    MANAGED_OS_IMAGE_NAME=my-upgrade
    
    PLAN_NAME=os-upgrader-$MANAGED_OS_IMAGE_NAME
    LATEST_HASH=$(kubectl -n cattle-system get plan $PLAN_NAME -o=jsonpath='{.status.latestHash}')
    
    printf "Plan '$PLAN_NAME' latest hash is: '$LATEST_HASH'\n"
    
    PLAN_LABEL=plan.upgrade.cattle.io/$PLAN_NAME
    printf "Listing all nodes with mismatching or missing label '$PLAN_LABEL':\n"
    kubectl get nodes -l $PLAN_LABEL!=$LATEST_HASH