使用 Azure Kubernetes 舰队管理器跨多个群集自动更新 Kubernetes 和节点映像(预览版)

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

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

本文介绍如何使用自动更新配置文件在新的 Kubernetes 或节点映像版本可用时自动触发更新运行。

重要

Azure Kubernetes 舰队管理器预览功能是可选择启用的自助功能。 预览功能是“按现状”和“按可用”提供的,不包括在服务级别协议和有限保证中。 客户支持部门会尽力为 Azure Kubernetes 舰队管理器预览功能提供部分支持。 因此,这些功能并不适合用于生产。

先决条件

  • 阅读自动更新配置文件的概念概述,其中对本指南中引用的配置进行了说明。

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

  • 如果要使用更新策略,则应使用更新运行操作说明一文中的说明配置一个更新策略。 需要更新策略资源标识符,与自动更新配置文件结合使用。

  • 设置以下环境变量:

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

  • 此外,还需要 fleet Azure CLI 扩展版本 1.3.0 或更高版本,可以通过运行以下命令来实现安装:

    az extension add --name fleet
    

    运行以下命令以更新到已发布的最新扩展版本:

    az extension update --name fleet
    

注意

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

创建自动更新配置文件

使用 az fleet autoupgradeprofile create 命令创建配置文件,如下所示。

可以在使用 create 命令时传递 --disabled 参数来创建禁用的自动更新配置文件。 若要启用自动更新配置文件,必须重新发出整个 create 命令并省略 --disabled 参数。

稳定渠道 Kubernetes 更新

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

依次逐个更新成员群集。

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

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

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

使用现有更新策略更新成员群集,确保在每个 Azure 区域中使用相同的节点映像版本。 成员群集都将运行相同的节点映像版本。

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

使用现有更新策略更新成员群集,并使用每个 Azure 区域的最新可用节点映像版本。 成员群集可以运行多个节点映像版本。

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

节点映像更新

使用新修补的 VHD 更新节点,其中包含安全修补程序和 bug 修复。

更新成员群集的节点映像,依次逐个处理群集。

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

更新成员群集的节点映像,使用现有更新策略处理群集。

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

查看自动更新配置文件

可以使用 autoupgradeprofile listautoupgradeprofile show 命令查看自动更新配置文件。

列出舰队的所有自动更新配置文件。

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

显示舰队的特定自动更新配置文件。

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

删除自动更新配置文件

使用以下命令删除现有自动更新配置文件。 系统将请求你确认删除。 如果希望立即删除配置文件,请加入 --yes

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

验证自动升级

仅当有新的 Kubernetes 或节点映像可用时才会执行自动更新。 可以按如下方式检查现有版本,并以此作为基准。

# Get Kubernetes version for a member cluster
az aks show \
  --resource-group $GROUP \
  --name $CLUSTER \
  --query currentKubernetesVersion
# Get NodeImage version for a member cluster
az aks show \
  --resource-group $GROUP \
  --name $CLUSTER \
  --query "agentPoolProfiles[].{name:name,mode:mode, nodeImageVersion:nodeImageVersion, osSku:osSku, osType:osType}"

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