群集节点映像升级期间未升级到 Gen2 的 Windows Server 节点池

本文探讨如何解决在 Microsoft Azure Kubernetes 服务(AKS)中,当群集节点映像升级时,Windows Server 节点池没有自动从 Gen1 升级到 Gen2 虚拟机(VM)的情况。

注意

此方案不适用于 Linux 节点池上的 Gen2 VM。

先决条件

  • Azure CLI 2.0.81 或更高版本。 有关安装说明,请参阅 安装 Azure CLI

现象

使用 Azure CLI 中的以下方法之一 升级节点映像 时,现有 Windows Server 节点池不会从 Gen1 升级到 Gen2:

原因

原因 1:现有节点池不会自动升级到 Gen2 VM

根据设计,节点映像升级不支持更新或升级现有节点池。 命令az aks upgradeaz aks nodepool upgrade仅升级节点映像(升级到更高版本的节点映像)。 这些命令不会升级相应的 VM 生成。

原因 2:群集升级到 Kubernetes 版本 1.25 或更高版本仅升级 OS

将群集升级到 Kubernetes 版本 1.25 或更高版本时,仅将操作系统(OS)升级到 Windows Server 2022。 现有节点池不受影响。 关联的 Azure 虚拟机规模集包含具有相同 Gen1 特性的虚拟机。

原因 3:使用 Windows Server 2022 创建的群集升级和新节点池,而无需指定有效的 VM 大小

将群集升级到 Kubernetes 版本 1.25 或更高版本后,请将 Windows Server 2022 指定为在节点池的 VM 上使用的 OS。 但是,由于以下原因之一,VM 不使用 Gen2 节点映像引用:

  • 不指定 VM 大小,区域中的默认 VM 大小不支持 Gen2 VM。

  • 指定仅限 Gen1 的 VM 大小。

将默认 OS 从 Windows Server 2019(Windows2019) 升级到 Windows Server 2022(Windows2022)时,现有节点池不会自动升级到不同的 VM 代系。

解决方案

升级群集,然后根据以下准则创建一个新的 Windows Server 节点池,该池支持该群集上的 Gen2 VM 大小

Kubernetes 群集升级版本 群集创建指南
1.25 或更高版本 运行 az aks create 命令以创建群集时,请将 --node-vm-size 参数设置为 Gen2 VM 大小
任何早于 1.25 的版本 运行 az aks create 命令以创建群集时,请将 --os-sku 参数值 Windows2022设置为,并将参数值设置为 --node-vm-sizeGen2 VM 大小

注意

如果指定 Gen2 VM 大小并将操作系统设置为 Windows Server 2019,则会收到附带以下错误消息的 ErrorCode_Windows2019NotSupportedWithGen2VM 错误代码:

<虚拟机大小> 是仅限第 2 代 VM。 Windows2019 不支持第 2 代 VM。 但是,可以选择第 1 代 VM 大小或将os_sku设置为 2022。

若要避免此问题,请在创建群集时选择以下选项之一:

  • 选择要与 Windows Server 2019 一起使用的 Gen1 VM 大小。

  • 将操作系统 SKU 设置为 Windows Server 2022 以与 Gen2 VM 一起使用。

  • 创建新节点池之前,请验证 VM 大小是否支持区域中的第 2 代 VM。 为此,请运行 az vm list-sizes --___location <region> --query "[?contains(name, 'v2')].name" --output table

  • 若要验证当前和可用的节点映像版本,请运行以下命令:

    • 检查当前版本: az aks nodepool show --resource-group <resource-group> --cluster-name <cluster-name> --name <nodepool-name> --query nodeImageVersion
    • 检查最新可用版本: az aks nodepool get-upgrades --resource-group <resource-group> --cluster-name <cluster-name> --nodepool-name <nodepool-name> --query latestNodeImageVersion

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区