适用于: ✔️车队经理 ✔️中心群集的车队经理
管理大量群集的平台管理员通常会在以安全且可预测的方式暂存多个群集的更新(例如更新节点 OS 映像或 Kubernetes 版本)时遇到问题。 为了解决此难题,Azure Kubernetes 舰队管理器(舰队)允许使用更新运行来跨多个群集协调更新。
更新运行流程由阶段、分组和策略组成,可手动执行一次性更新,也可使用自动升级配置文件自动执行持续性的定期更新。 所有更新运行任务(手动或自动)均遵守成员集群的维护时段。
本指南介绍如何配置和手动执行更新运行。
先决条件
请阅读有关此功能的概念性概述,其中提供了有关本指南中引用的更新策略、运行、阶段和组的说明。
必须具有包含一个或多个成员群集的舰队资源。 如果尚未创建,请按照快速入门中的说明创建舰队资源,并将 Azure Kubernetes 服务 (AKS) 群集作为成员加入其中。
设置以下环境变量:
export GROUP=<resource-group> export FLEET=<fleet-name>如果要按照本文中的 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 群集级别设置的计划内维护时段。 有关详细信息,请参阅跨多个成员群集的计划内维护,其中说明了更新运行如何处理配置了计划内维护时段的成员群集。
逐个更新所有群集
在 Azure 门户中,导航到 Azure Kubernetes 舰队管理器资源。
在服务菜单中,选择设置下的多群集更新>创建运行项。
输入此次更新运行的名称,然后在升级类型中选择“逐个”。
为“更新范围”选择以下选项之一:
- 控制平面和节点池的 Kubernetes 版本
- 仅集群控制平面的 Kubernetes 版本
- 仅限节点镜像版本
为节点镜像选择以下选项之一:
- 最新映像:将更新运行中的每个 AKS 群集更新为该群集在其区域内可用的最新映像。
- 一致映像:更新运行中的 AKS 群集有可能跨多个区域,而这些区域的最新可用节点映像可能不同(有关更多信息,请查看发布跟踪器)。 更新运行会在所有这些区域中选取最新的共同映像,以实现一致性。
Important
节点映像版本仅在原始发布日期起 90 天内有效。 如果更新运行选择的目标节点映像版本在升级成员群集时超过 90 天窗口,该成员群集的升级可能会失败。
选择创建以创建更新运行。
使用
az fleet updaterun create命令创建一次更新运行,并为--upgrade-type和--node-image-selection标志指定你选择的值。 以下命令会创建一个更新运行,该运行用于更新控制平面和节点池的 Kubernetes 版本,并使用其区域中每个群集可用的最新节点映像。--upgrade-type标志支持以下值:-
Full会升级控制平面和节点池的 Kubernetes 版本,同时升级节点映像。 -
ControlPlaneOnly仅升级集群控制平面的 Kubernetes 版本。 -
NodeImageOnly仅升级节点映像。
--node-image-selection标志支持以下值:-
Latest:将更新运行中的每个 AKS 群集更新到其所在区域中该群集可用的最新映像。 -
Consistent:更新运行中的 AKS 群集有可能跨多个区域,而这些区域的最新可用节点映像可能不同(有关更多信息,请查看发布跟踪器)。 更新运行会在所有这些区域中选取最新的共同映像,以实现一致性。
az fleet updaterun create \ --resource-group $GROUP \ --fleet-name $FLEET \ --name run-1 \ --upgrade-type Full \ --kubernetes-version 1.26.0 \ --node-image-selection Latest-
使用
az fleet updaterun start命令启动更新运行。az fleet updaterun start \ --resource-group $GROUP \ --fleet-name $FLEET \ --name run-1
创建更新运行时,可以控制更新运行的范围。
--upgrade-type 标志支持以下值:
-
ControlPlaneOnly仅升级集群控制平面的 Kubernetes 版本。 -
Full会升级控制平面和节点池的 Kubernetes 版本,同时升级节点映像。 -
NodeImageOnly仅升级节点映像。
此外,--node-image-selection 标志支持以下值:
- 最新:将更新运行中的每个 AKS 群集更新为该群集在其区域内可用的最新映像。
- 一致:更新运行中的 AKS 群集有可能跨多个区域,而这些区域的最新可用节点映像可能不同(有关更多信息,请查看发布跟踪器)。 更新运行会在所有这些区域中选取最新的共同映像,以实现一致性。
Important
节点映像版本仅在原始发布日期起 90 天内有效。 如果更新运行选择的目标节点映像版本在升级成员群集时超过 90 天窗口,该成员群集的升级可能会失败。
启动更新运行:
若要启动更新运行,请运行以下命令:
az fleet updaterun start \
--resource-group $GROUP \
--fleet-name $FLEET \
--name <run-name>
使用组和阶段更新集群
可以使用更新阶段定义更新运行,以按顺序将更新应用到不同的更新组。 例如,第一个更新阶段可能会更新测试环境成员群集,第二个更新阶段稍后将更新生产环境成员群集。 还可以指定每个阶段之前或之后需要哪些审批,以及更新阶段之间的等待时间。 可以将此顺序以更新策略的形式存储为模板。
在 Azure 门户中,导航到 Azure Kubernetes 舰队管理器资源。
在服务菜单中,选择设置下的多群集更新>创建运行项。
输入更新运行的名称,然后选择“阶段”作为更新顺序类型。
选择 “创建阶段”,然后输入阶段的名称,并根据需要设置审批和阶段之间的等待时间。
选择要在此阶段中加入的更新组。 如果要按特定顺序更新更新组,还可以指定更新组的顺序。 完成操作后,选择“创建”。
为“更新范围”选择以下选项之一:
- 控制平面和节点池的 Kubernetes 版本
- 仅集群控制平面的 Kubernetes 版本
- 仅限节点镜像版本
为节点镜像选择以下选项之一:
- 最新映像:将更新运行中的每个 AKS 群集更新为该群集在其区域内可用的最新映像。
- 一致映像:更新运行中的 AKS 群集有可能跨多个区域,而这些区域的最新可用节点映像可能不同(有关更多信息,请查看发布跟踪器)。 更新运行会在所有这些区域中选取最新的共同映像,以实现一致性。
选择创建以创建更新运行。
每次创建更新运行时都指定阶段及其顺序可能会变得重复且繁琐。 更新策略可通过允许存储更新运行模板来简化这一过程。 有关详细信息,请参阅更新策略的创建和使用。
在“多群集更新”菜单中,选择更新运行,然后选择“启动”。
创建 JSON 文件以定义更新运行的阶段和组。 下面是来自阶段文件 (example-stages.json) 的输入示例:
{ "stages": [ { "name": "stage1", "groups": [ { "name": "group-1a" }, { "name": "group-1b" }, { "name": "group-1c" } ], "afterStageWaitInSeconds": 3600 }, { "name": "stage2", "groups": [ { "name": "group-2a" }, { "name": "group-2b" }, { "name": "group-2c" } ] } ] }使用
az fleet updaterun create命令创建更新运行,其中--stages标志设置为 JSON 文件的名称,--upgrade-type和--node-image-selection标志设置为所选值。 以下命令会创建一个更新运行,该运行用于更新控制平面和节点池的 Kubernetes 版本,并使用其区域中每个群集可用的最新节点映像。--upgrade-type标志支持以下值:-
Full会升级控制平面和节点池的 Kubernetes 版本,同时升级节点映像。 -
ControlPlaneOnly仅升级集群控制平面的 Kubernetes 版本。 -
NodeImageOnly仅升级节点映像。
--node-image-selection标志支持以下值:-
Latest:将更新运行中的每个 AKS 群集更新到其所在区域中该群集可用的最新映像。 -
Consistent:更新运行中的 AKS 群集有可能跨多个区域,而这些区域的最新可用节点映像可能不同(有关更多信息,请查看发布跟踪器)。 更新运行会在所有这些区域中选取最新的共同映像,以实现一致性。
az fleet updaterun create \ --resource-group $GROUP \ --fleet-name $FLEET \ --name run-1 \ --upgrade-type Full \ --kubernetes-version 1.26.0 \ --node-image-selection Latest \ --stages example-stages.json-
使用
az fleet updaterun start命令启动更新运行。az fleet updaterun start \ --resource-group $GROUP \ --fleet-name $FLEET \ --name run-1
使用更新策略创建更新运行任务
创建更新运行要求你每次指定阶段、组、顺序。 更新策略可通过允许存储更新运行模板来简化这一过程。
注意
可以基于同一更新策略创建多个更新运行,并为每个运行指定唯一名称。
可以使用以下方法之一创建更新策略:
在创建更新运行时保存更新策略
管理更新任务
以下部分介绍如何使用 Azure 门户和 Azure CLI 管理更新运行。
可以使用 命令启动处于“未启动”或“失败”状态的更新运行
az fleet updaterun start:az fleet updaterun start \ --resource-group $GROUP \ --fleet-name $FLEET \ --name <run-name>可以使用 命令停止当前正在运行的更新运行
az fleet updaterun stop:az fleet updaterun stop \ --resource-group $GROUP \ --fleet-name $FLEET \ --name <run-name>可以使用
--targets命令,通过在az fleet updaterun skip标志中指定更新阶段或组来跳过这些更新阶段或组:az fleet updaterun skip \ --resource-group $GROUP \ --fleet-name $FLEET \ --name <run-name> \ --targets Group:my-group-name Stage:my-stage-name有关详细信息,请参阅有关更新运行状态和运行/阶段/组的跳过行为的概念性概述。
使用自动升级配置文件自动执行更新运行
自动升级配置文件用于在有新的 Kubernetes 版本或节点映像版本可用时,自动在成员集群中执行更新。
有关配置自动升级配置文件的详细信息,请参阅使用 Azure Kubernetes Fleet Manager 自动升级 Kubernetes 和节点映像。
从自动升级配置文件生成更新运行
创建自动升级配置文件时,群集可以位于各种版本的 Kubernetes 或节点映像上。 根据所选的自动升级通道,在新版本发布触发自动升级以创建和执行更新运行之前,可能需要一段时间。
通过自动升级,可以随时使用 az fleet autoupgradeprofile generate-update-run 命令生成新的更新运行。 生成的更新运行基于当前 AKS 发布的 Kubernetes 或节点映像版本。
az fleet autoupgradeprofile generate-update-run \
--resource-group $GROUP \
--fleet-name $FLEET \
--name $AUTOUPGRADEPROFILE
生成的更新运行不会自动启动,因而你可以查看它。 如果对生成的更新运行感到满意,可以按照 管理更新运行中的步骤启动和管理它。