本文探讨如何解决在 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:
整个群集升级(使用
az aks upgrade
命令)特定节点池升级(使用
az aks nodepool upgrade
命令)
原因
原因 1:现有节点池不会自动升级到 Gen2 VM
根据设计,节点映像升级不支持更新或升级现有节点池。 命令az aks upgrade
az 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-size Gen2 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 反馈社区。