使用 Azure Kubernetes Fleet Manager 定义可重用的更新策略

适用于: ✔️车队经理 ✔️中心群集的车队经理

管理员可以通过定义一系列阶段和组来控制对机群管理的群集的更新序列。 用户可以配置审批和暂停应在那些阶段和组中何时发生。 整个配置可以保存为更新策略,可以独立于更新运行或自动升级进行管理,从而根据需要重复使用策略。

本文介绍如何使用组和阶段定义更新策略。

关系图:包含两个更新阶段的示例更新策略。每个更新阶段都包含两个更新组。每个更新组都包含两个成员群集。

先决条件

  • 请参阅舰队更新的概念概述,其中提供了本指南中引用的更新运行、阶段、组和策略的说明。

  • 必须具有包含一个或多个成员群集的舰队资源。 否则,请按照 quickstart 创建 Fleet 资源并将Azure Kubernetes 服务 (AKS)群集加入为成员。

  • 设置以下环境变量:

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

  • 还需要 fleet Azure CLI 扩展版本 1.6.0 或更高版本,可以通过运行以下命令进行安装:

    az extension add --name fleet
    

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

    az extension update --name fleet
    

使用更新组创建更新策略

可通过将群集分配到同一个更新组,在更新策略中选择这些群集。 可以定义将这些更新组分配到阶段的更新策略。 在更新阶段中,更新将并行应用于每个更新组。 在更新组中,成员群集按顺序更新。

注意

一个舰队成员只能加入一个更新组,但一个更新组内可以有多个舰队成员。 更新组本身不是单独的资源类型。 更新组只是表示来自舰队成员的引用的字符串。 因此,如果删除所有引用通用更新组的机队成员,该特定更新组也不再存在。

将群集分配到更新组

在将成员群集添加到舰队时分配给组

  1. 在 Azure 门户中,导航到 Azure Kubernetes Fleet Manager 资源。

  2. 从服务菜单的“设置”下,选择“成员群集”“添加”>

    用于添加成员集群的 Azure Kubernetes Fleet Manager 的 Azure 门户页面截图。

  3. 选择要添加的群集,然后选择“下一步:查看 + 添加”

  4. 输入要将群集分配到的更新组的名称,然后选择“添加”

    Azure 门户页面的屏幕截图,显示 Azure Kubernetes Fleet Manager 查看并添加成员群集的步骤。

使用 az fleet member create 命令将成员群集添加到舰队时,将成员群集分配给更新组,并将 --update-group 参数设置为更新组的名称。

az fleet member create \
    --resource-group $GROUP \
    --fleet-name $FLEET \
    --name member1 \
    --member-cluster-id $CLUSTERID \
    --update-group group-1a

将现有舰队成员分配给更新组

  1. 在 Azure 门户中,导航到 Azure Kubernetes Fleet Manager 资源。

  2. 从服务菜单的“设置”下,选择“成员群集”

  3. 选择要分配给更新组的群集,然后选择“分配更新组”

    用于将现有成员群集分配到组的 Azure 门户页面截图。

  4. 输入要将群集分配到的更新组的名称,然后选择“分配”

     Azure门户页面的成员群集截图,其中显示了用于更新成员群集的组的窗体。

使用 az fleet member update 命令将现有舰队成员分配给更新组,并将 --update-group 标志设置为更新组的名称。

az fleet member update \
 --resource-group $GROUP \
 --fleet-name $FLEET \
 --name member1 \
 --update-group group-1

创建更新策略

更新策略由一个或多个阶段组成,其中一个阶段可以包含一个或多个更新组。

  1. 在 Azure 门户中,导航到 Azure Kubernetes Fleet Manager 资源。

  2. 在服务菜单中的“设置”下,选择“多群集更新”“策略”>,然后选择“创建”

  3. 输入策略的名称。

  4. 首次查看页面时,会显示一个更新策略说明图,有助于直观显示策略的功能。

     Azure 门户的屏幕截图,其中显示了创建更新策略.

  5. 选择“创建阶段”并输入以下内容:

    • 阶段名称 - 命名阶段 - 它在策略中的所有阶段名称中必须是唯一的。
    • (可选) 阶段审批 - 如果要在此阶段开始之前或完成后等待审批,请选择此选项。 有关详细信息,请参阅 添加审批以更新组和阶段
    • (可选)阶段后暂停 - 如果要在移动到下一阶段之前定义暂停,请选择此选项。
    • (可选) 暂停持续时间 - 选择预定义持续时间,或输入自定义值(以秒为单位)。

     Azure 门户的屏幕截图,其中显示了创建 Azure Kubernetes Fleet Manager 更新策略阶段.

  6. 将一个或多个 更新组 分配到阶段,然后选择“ 创建”。

    注意

    每个更新阶段的最大更新组数为 50

     Azure 门户的屏幕截图,显示在创建 Azure Kubernetes Fleet Manager 更新策略阶段中,选择要包含的更新组。

对于此方案,我们将创建阶段和组,以匹配用于Azure门户过程的详细信息。

  1. 创建 JSON 文件以定义更新运行的阶段和组。 阶段按 JSON 文件中显示的顺序按顺序运行。 组在每个阶段中并行运行,因此排序并不重要。 以下示例文件(example-stages.json)定义了具有两个阶段的策略,并包括可选 maxConcurrency 设置:

    {
        "stages": [
            {
                "name": "stage-1",
                "maxConcurrency": "7",
                "groups": [
                    {
                        "name": "group-1",
                        "maxConcurrency": "3"
                    },
                    {
                        "name": "group-2",
                        "maxConcurrency": "50%"
                    }
                ],
                "afterStageWaitInSeconds": 300
            },
            {
                "name": "stage-2",
                "maxConcurrency": "100%",
                "groups": [
                    {
                        "name": "group-3",
                        "maxConcurrency": "2"
                    }
                ]
            }
        ]
    }
    

    注意

    maxConcurrency 字段是可选的,控制在阶段或组级别可以并发升级的群集数量。 使用更大的值可以更快地在车队中升级群集,或者使用较小的值进行更受控的推出,以限制爆炸半径(如果出现问题)。

    在此示例中,stage-1maxConcurrency设置为"7",这允许在此阶段多达"7"个群集同时升级。 在 stage-1 中,group-1 将并发性限制为 "3" 个群集,这意味着此组中最多有 "3" 个可以同时升级。 group-2 "50%"最多允许其群集同时升级(例如,如果组包含 4 个群集,则最多可以同时升级 2 个群集)。

    值可以是固定整数(例如)"3"或百分比(例如)。 "100%" 如果省略,系统将应用默认值。 有关如何解析这些值及其上限的详细信息,请参阅最大并发性(预览版)。

  2. 使用 az fleet updatestrategy create 命令新建更新策略,并将 --stages 标志设置为 JSON 文件的名称。

    az fleet updatestrategy create \
     --resource-group $GROUP \
     --fleet-name $FLEET \
     --name $STRATEGY \
     --stages example-stages.json
    

后续步骤

你可以在手动更新操作或自动升级配置中使用更新策略。 请参阅: