使用 Azure Kubernetes 舰队管理器跨多个群集更新 Kubernetes 和节点映像

管理大量群集的平台管理员通常会在以安全且可预测的方式暂存多个群集的更新(例如更新节点 OS 映像或 Kubernetes 版本)时遇到问题。 为了解决此难题,Azure Kubernetes 舰队管理器(舰队)允许使用更新运行来跨多个群集协调更新。

更新运行由阶段、组和策略组成,可以手动应用一次性更新,也可以使用自动更新配置文件自动应用持续的常规更新。 所有更新运行(手动或自动化)均遵循成员群集维护时段。

本指南介绍如何配置和手动执行更新运行。

先决条件

  • 请阅读有关此功能的概念性概述,其中提供了有关本指南中引用的更新策略、运行、阶段和组的说明。

  • 必须具有包含一个或多个成员群集的舰队资源。 如果没有,请按照快速入门创建舰队资源,并将 Azure Kubernetes 服务 (AKS) 群集加入为成员。

  • 设置以下环境变量:

    export GROUP=<resource-group>
    export FLEET=<fleet-name>
    export AKS_CLUSTER_ID=<aks-cluster-resource-id>
    
  • 如果要按照本文中的 Azure CLI 说明操作,则需要安装 Azure CLI 版本 2.58.0 或更高版本。 若要安装或升级,请参阅安装 Azure CLI

  • 你还需要 Azure CLI 扩展 fleet,可以通过运行以下命令来安装该扩展:

    az extension add --name fleet
    

    运行 az extension update 命令,更新到最新发布的扩展版本:

    az extension update --name fleet
    

创建更新运行

更新运行支持两种群集更新顺序选项:

  • 逐个:如果你不想控制群集的更新顺序,one-by-one 提供了一种简单的方法,你可借此方法按顺序逐一更新舰队的所有成员群集。
  • 使用更新组和阶段控制群集顺序 - 如果要控制群集更新顺序,则可以在更新组和更新阶段中组织成员群集。 可以将此顺序以更新策略的形式存储为模板。 之后可以使用更新策略创建更新运行,而不必在每次需要创建更新运行时定义顺序。

注意

更新运行遵循在 AKS 群集级别设置的计划内维护时段。 有关详细信息,请参阅跨多个成员群集的计划内维护,其中说明了更新运行如何处理配置了计划内维护时段的成员群集。

逐个更新所有群集

  1. 在 Azure 门户中,导航到 Azure Kubernetes 舰队管理器资源。

  2. 从服务菜单的“设置”下,选择“多群集更新”>“创建运行”

  3. 输入更新运行的名称,然后将更新类型选为“逐个”

    用于创建更新运行的 Azure 门户窗格的屏幕截图,这些更新运行可在 Azure Kubernetes 舰队管理器中逐个更新群集。

  4. 为“更新范围”选择以下选项之一:

    • 控制平面和节点池的 Kubernetes 版本
    • 仅群集控制平面的 Kubernetes 版本
    • 仅节点映像版本
  5. 为“节点映像”选择以下选项之一:

    • 最新映像:将更新运行中的每个 AKS 群集更新为该群集在其区域内可用的最新映像。
    • 一致映像:更新运行中的 AKS 群集有可能跨多个区域,而这些区域的最新可用节点映像可能不同(有关更多信息,请查看发布跟踪器)。 更新运行会在所有这些区域中选取最新的共同映像,以实现一致性。

    用于创建更新运行的 Azure 门户窗格的屏幕截图。将显示升级范围部分。

  6. 选择“创建”以创建更新运行。

使用组和阶段更新群集

可以使用更新阶段定义更新运行,以按顺序将更新应用到不同的更新组。 例如,第一个更新阶段可能会更新测试环境成员群集,第二个更新阶段稍后将更新生产环境成员群集。 还可以指定各个更新阶段之间的等待时间。 可以将此顺序以更新策略的形式存储为模板。

  1. 在 Azure 门户中,导航到 Azure Kubernetes 舰队管理器资源。

  2. 从服务菜单的“设置”下,选择“多群集更新”>“创建运行”

  3. 输入更新运行的名称,然后选择“阶段”作为更新顺序类型。

    用于在更新运行中选择阶段模式的 Azure 门户页的屏幕截图。

  4. 选择“创建阶段”,然后输入阶段名称和阶段之间的等待时间。

    用于创建阶段并定义等待时间的 Azure 门户页的屏幕截图。

  5. 选择要在此阶段中加入的更新组。 如果要按特定顺序更新更新组,还可以指定更新组的顺序。 完成操作后,选择“创建”。

    用于创建阶段的 Azure 门户页的屏幕截图,其中显示了如何选择更新组。

  6. 为“更新范围”选择以下选项之一:

    • 控制平面和节点池的 Kubernetes 版本
    • 仅群集控制平面的 Kubernetes 版本
    • 仅节点映像版本
  7. 为“节点映像”选择以下选项之一:

    • 最新映像:将更新运行中的每个 AKS 群集更新为该群集在其区域内可用的最新映像。
    • 一致映像:更新运行中的 AKS 群集有可能跨多个区域,而这些区域的最新可用节点映像可能不同(有关更多信息,请查看发布跟踪器)。 更新运行会在所有这些区域中选取最新的共同映像,以实现一致性。

    用于创建更新运行的 Azure 门户窗格的屏幕截图。将显示升级范围部分。

  8. 选择“创建”以创建更新运行。

    每次创建更新运行时都指定阶段及其顺序可能会变得重复且繁琐。 更新策略可通过允许存储更新运行模板来简化这一过程。 有关详细信息,请参阅更新策略的创建和使用

  9. 在“多群集更新”菜单中,选择更新运行,然后选择“启动”

使用更新策略创建更新运行

创建更新运行要求你每次指定阶段、组、顺序。 更新策略可通过允许存储更新运行模板来简化这一过程。

注意

可以通过同一更新策略创建多个更新运行,并使用唯一的名称。

可以使用以下方法之一创建更新策略:

在创建更新运行时保存更新策略

  • 在 Azure 门户中创建更新运行时保存更新策略:

    Azure 门户的屏幕截图,其中显示了作为更新策略保存的更新运行阶段。

管理更新运行

以下部分介绍如何使用 Azure 门户和 Azure CLI 管理更新运行。

  • 在舰队资源的“多群集更新”页上,可以启动处于“未启动”或“失败”状态的更新运行:

    Azure 门户的屏幕截图,其中显示了如何启动处于“未启动”状态的更新运行。

  • 在舰队资源的“多群集更新”选项卡下,可以停止当前正在运行的更新运行:

    Azure 门户的屏幕截图,其中显示了如何停止处于“正在运行”状态的更新运行。

  • 在处于“未启动”、“失败”或“正在运行”状态的任何更新中,可以选择任何阶段并跳过更新:

    Azure 门户的屏幕截图,其中显示了如何跳过更新运行中特定阶段的升级。

    同样,也可以在更新组或成员群集级别跳过升级。

有关详细信息,请参阅有关更新运行状态和运行/阶段/组的跳过行为的概念性概述

后续步骤