使用 Azure Kubernetes 集群管理器,跨多个集群自动升级 Kubernetes 和节点映像

适用于:✔️机队经理✔️具有中心群集的机队经理

及时安全地使群集保持更新是平台管理员的关键问题。 采用 Azure Kubernetes Fleet Manager 的 更新运行策略时,可以使用自动升级配置文件,在发布新的 Kubernetes 版本或节点映像版本时自动执行更新运行。

本文介绍如何使用自动升级配置文件,在 Azure Kubernetes 服务 (AKS) 发布新的 Kubernetes 版本或节点映像版本时,自动创建并执行更新运行。

注意

自动升级触发的更新进程遵循您在 AKS 群集级别设置的维护时段。 有关详细信息,请参阅 跨多个成员群集的计划内维护 ,了解如何在配置了计划维护时段的情况下,更新进程处理成员群集。

在您开始之前

  • 阅读 自动升级配置文件的概念性概述,其中介绍了本指南中引用的配置。
  • 使用一个或多个成员群集设置机群管理器。 如果没有,请按照 快速入门 创建机队管理器并加入 AKS 群集作为成员。
  • 配置更新策略。 请按照“更新运行”操作指南文章中的说明进行操作。 使用 Azure CLI 时,您需要更新策略资源标识符来与自动升级配置文件配合使用。
  • 设置以下环境变量以在 Azure CLI 命令中使用:

    export GROUP=<resource-group>
    export FLEET=<fleet-name>
    export AUTOUPGRADEPROFILE=<upgrade-profile-name>
    # Optional
    export STRATEGYID=<strategy-id>
    export CLUSTER=<aks-cluster-name>
    
  • 安装最新的Azure CLI版本。 若要安装或升级,请参阅安装 Azure CLI

  • 安装最新的fleetAzure CLI扩展。 使用 az extension add 命令安装扩展。

    az extension add --name fleet
    

    使用 az extension update 命令将该扩展更新到最新版本。

    az extension update --name fleet
    

注意

根据所选的自动升级渠道和节点镜像选项,从节点池快照创建的代理池群集将受到以下影响:

  • 节点映像通道:节点映像升级到由 Fleet Manager 确定的版本。 从代理池中删除对快照(creationData)的引用。
  • 将节点映像设置为:稳定快速目标 Kubernetes 次要版本通道:
    • 一致的映像:节点映像升级到由 Fleet Manager 确定的版本。 从代理池中删除对快照(creationData)的引用。
    • 最新映像:代理池保留对快照(creationData)的引用,并且不会修改节点映像。

有关详细信息,请参阅 了解节点映像升级和快照

创建自动更新配置文件

使用 az fleet autoupgradeprofile create 命令创建自动升级配置文件。

可以通过在 --disabled 命令中包括 az fleet autoupgradeprofile create 标志来禁用自动升级配置文件。 若要重新启用已禁用的自动升级配置文件,请在不使用 az fleet autoupgradeprofile create 标志的情况下重新运行 --disabled 命令。

注意

禁用自动升级配置文件不会影响任何正在进行中的更新任务。 但是,在重新启用该配置文件之前,此过程将停止生成新的更新运行记录。

Kubernetes 稳定通道更新

更新到次要版本 N-1 上支持的最新 Kubernetes 修补程序版本,其中 N 是最新支持的次要版本。

逐个更新成员群集

使用 az fleet autoupgradeprofile create 命令按顺序更新成员群集。

az fleet autoupgradeprofile create \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE \
  --channel Stable

使用现有更新策略更新成员群集

使用现有更新策略更新成员群集。 使用 az fleet autoupgradeprofile create 命令,并将 --update-strategy-id 参数设置为现有更新策略的 ID。

az fleet autoupgradeprofile create \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE \
  --update-strategy-id $STRATEGYID \
  --channel Stable

使用具有一致节点映像的现有更新策略更新成员群集

使用现有更新策略更新成员群集,并确保在每个Azure区域中使用相同的节点映像版本。 使用 az fleet autoupgradeprofile create 命令,并将 --node-image-selection 参数设置为 Consistent。 所有成员群集都运行相同的节点映像版本。

az fleet autoupgradeprofile create \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE \
  --update-strategy-id $STRATEGYID \
  --channel Stable \
  --node-image-selection Consistent

使用具有最新节点映像的现有更新策略更新成员群集

使用现有更新策略更新成员群集,并确保每个Azure区域使用最新的可用节点映像版本。 使用 az fleet autoupgradeprofile create 命令,并将 --node-image-selection 参数设置为 Latest。 成员群集可以运行多个节点映像版本。

az fleet autoupgradeprofile create \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE \
  --update-strategy-id $STRATEGYID \
  --channel Stable \
  --node-image-selection Latest

节点图像通道更新

使用新修补的计算机映像更新节点,其中包括安全修复和 bug 修复。

逐个更新节点映像

使用 az fleet autoupgradeprofile create 命令按顺序更新成员集群的节点映像。

az fleet autoupgradeprofile create \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE \
  --channel NodeImage

使用现有更新策略更新节点映像

使用现有更新策略更新成员群集的节点映像。 使用 az fleet autoupgradeprofile create 命令,并将 --update-strategy-id 参数设置为现有更新策略的 ID。

az fleet autoupgradeprofile create \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE \
  --update-strategy-id $STRATEGYID \
  --channel NodeImage 

目标 Kubernetes 次要版本更新

使用 --target-kubernetes-version 参数更新到定义的目标 Kubernetes 次要版本。 请以 {主版本号}.{次版本号} 格式提供版本号(例如,1.33)。 当修补程序可用时,Fleet Manager 自动升级会自动将成员群集升级到指定目标版本的最新修补程序版本。

重要

使用目标 Kubernetes 次要版本通道时,请记住如下信息:

  • 必须指定 --target-kubernetes-version 参数。 其他自动升级通道(快速、稳定、节点映像和安全修补程序)不支持此参数。
  • 长期支持 (LTS) 标志 --long-term-support仅在使用 目标 Kubernetes 次要版本 通道时可用。 对于其他通道,请将此标志设置为 False
  • 只能为带有标志的自动升级配置文件选择 LTS Kubernetes 版本(--long-term-support)。 要使 Fleet 自动升级在这种情况下继续正常工作,请确保生成的更新运行任务中的所有集群均已启用 LTS。 遇到第一个非 LTS 群集时,非 LTS 群集会导致更新运行失败。
  • 不能将目标 Kubernetes 版本设置为 AKS 尚未发布的将来的 Kubernetes 版本。

将成员群集更新到特定的 Kubernetes 次要版本

使用 --target-kubernetes-version 命令,并将 az fleet autoupgradeprofile create 参数设置为所需版本,以将成员群集更新到特定的 Kubernetes 次版本。 以下示例将成员群集更新到 Kubernetes 版本 1.33。

az fleet autoupgradeprofile create \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE \
  --channel TargetKubernetesVersion \
  --target-kubernetes-version "1.33"

将启用了 LTS 的成员群集更新为特定的 Kubernetes 次要版本

使用 az fleet autoupgradeprofile create 命令,将 --long-term-support 参数设置为所需版本并启用 --target-kubernetes-version 标志,把已启用 LTS 的成员群集更新到特定的 Kubernetes 次要版本。 以下示例使用 LTS 将成员群集更新到 Kubernetes 版本 1.29。

az fleet autoupgradeprofile create \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE \
  --channel TargetKubernetesVersion \
  --target-kubernetes-version "1.29" \
  --long-term-support

安全补丁通道更新

使用安全修补程序更新 Linux 节点。 尽可能通过实时补丁应用更新。 否则,请部署包含安全修复的新机器映像。

使用安全修补程序逐个更新节点

使用 az fleet autoupgradeprofile create 命令按顺序更新成员集群的节点映像。

az fleet autoupgradeprofile create \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE \
  --channel SecurityPatch

使用现有更新策略更新具有安全修补程序的节点

使用现有更新策略更新成员群集的节点映像。 使用 az fleet autoupgradeprofile create 命令,并将 --update-strategy-id 参数设置为现有更新策略的 ID。

az fleet autoupgradeprofile create \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE \
  --update-strategy-id $STRATEGYID \
  --channel SecurityPatch 

查看自动升级方案

自动升级配置属于 Fleet 级资源。 它们不直接附加到单个 AKS 群集。 若要确定哪些配置文件可以更新你的 AKS 群集,请先列出 Fleet 成员,并确认这些群集是 Fleet 的成员。

az fleet member list \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --query "[].{memberName:name,clusterResourceId:clusterResourceId}" \
  --output table

使用 az fleet autoupgradeprofile list 命令列出舰队的所有自动升级配置文件。

az fleet autoupgradeprofile list \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --output table

使用 az fleet autoupgradeprofile show 命令显示舰队的特定自动升级配置文件。 在输出中查看通道、状态和 updateStrategyId

az fleet autoupgradeprofile show \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE

如果 updateStrategyId 为空,则配置文件使用 逐个 更新顺序,并按顺序将 Fleet 的成员集群纳入其中。 如果 updateStrategyId 包含资源 ID,请显示所引用的策略,以便查看用于确定生成的更新运行包含哪些 Fleet 成员的阶段、组或成员选择器。

PROFILE_STRATEGY_ID=$(az fleet autoupgradeprofile show \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE \
  --query updateStrategyId \
  --output tsv)

if [[ -n "$PROFILE_STRATEGY_ID" ]]; then
  az fleet updatestrategy show \
    --resource-group $GROUP \
    --fleet-name $FLEET \
    --name "${PROFILE_STRATEGY_ID##*/}"
fi

删除自动升级配置文件

使用 az fleet autoupgradeprofile delete 命令删除现有自动更新配置文件。 运行此命令后,系统会提示确认删除。 若要跳过确认并立即删除配置文件,请在命令中加入 --yes

az fleet autoupgradeprofile delete \
  --resource-group $GROUP \
  --fleet-name $FLEET \
  --name $AUTOUPGRADEPROFILE

注意

删除自动升级配置文件不会影响任何正在进行的更新运行。

创建自动更新配置文件

更新到次要版本 N-1 上支持的最新 Kubernetes 修补程序版本,其中 N 是最新支持的次要版本。

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

  2. 在服务菜单中的 “设置”下,选择 “多群集更新>自动升级配置文件>+ 创建”。

  3. “创建自动升级配置文件”上,配置以下选项:

    • “自动升级详细信息”下:
      • 自动升级配置文件名称:输入自动升级配置文件的名称。
      • 状态:选择“启用或禁用”。 发布新版本时不会触发已禁用的自动升级配置文件。
      • 更新顺序:选择 阶段逐个
    • 自动升级触发器下:
      • 频道:选择 “稳定”。
      • 节点映像:选择 最新映像一致映像
    • 策略详细信息下
      • 如果选择了更新序列并使用阶段,请选择一个现有策略或创建新的策略。
  4. 选择创建以创建自动升级配置文件。

    用于使用稳定通道创建自动升级配置文件的 Azure Kubernetes Fleet Manager Azure 门户窗格的屏幕截图。

查看自动升级方案

自动升级配置属于 Fleet 级资源。 它们不直接附加到单个 AKS 群集。 若要确定哪些配置文件可以更新 AKS 群集,请确认群集是机队的成员,然后查看机队的配置文件及其更新序列。

  1. 在 Azure 门户中,导航到 Azure Kubernetes 舰队管理器资源。
  2. 在服务菜单中,选择 “机队成员”,并确认 AKS 群集显示在成员列表中。
  3. “设置”下,选择 “多群集更新>自动升级配置文件”。
  4. 选择自动升级配置文件以查看其通道、状态和更新序列。
  5. 如果更新序列是 一个接一个,则配置文件按顺序包括舰队的成员群集。 如果更新序列使用 阶段,请检查相关策略的阶段、组和成员选择器,以确定所生成的更新运行包含哪些 Fleet 成员。

删除自动升级配置文件

  1. 在 Azure 门户中,导航到 Azure Kubernetes 舰队管理器资源。
  2. 在服务菜单中的 “设置”下,选择 “多群集更新>自动升级配置文件”。
  3. 选择要删除的配置文件,然后选择“ 删除> ”以确认。

注意

删除自动升级配置文件不会影响任何正在进行的更新运行。

验证自动升级

仅当新的 Kubernetes 或节点映像可用时,才会自动升级。 触发自动升级时,会创建一个带链接的更新运行,因此你可以使用 manage update run 来查看自动升级的结果。

您还可以将现有版本作为基准进行检查。

使用带有 --query 参数的 az aks show 命令,按 currentKubernetesVersion 属性筛选输出,以获取成员集群的当前 Kubernetes 版本。

az aks show \
  --resource-group $GROUP \
  --name $CLUSTER \
  --query currentKubernetesVersion

使用 az aks show 命令并指定 --query 参数,将输出筛选为 nodeImageVersion 属性,以获取成员群集的当前节点映像版本。

az aks show \
  --resource-group $GROUP \
  --name $CLUSTER \
  --query "agentPoolProfiles[].{name:name,mode:mode, nodeImageVersion:nodeImageVersion, osSku:osSku, osType:osType}"

更新运行完成后,可以重新运行这些命令并查看已部署的更新版本。

从自动升级配置文件生成更新运行

创建自动升级配置文件后,可能需要一些时间,新的 Kubernetes 或节点映像版本才会触发自动升级,以创建和执行更新操作。 通过自动升级,可以随时使用 az fleet autoupgradeprofile generate-update-run 命令生成新的更新运行。 生成的更新运行基于当前 AKS 发布的 Kubernetes 或节点映像版本。

有关从自动升级配置文件创建按需更新运行的详细信息,请参阅 从自动升级配置文件生成更新运行