本文介绍如何排查在群集节点映像Microsoft Azure Kubernetes 服务(AKS)中升级群集节点映像时,Windows Server 节点池不会自动从 Gen1 升级到 Gen2 虚拟机(VM)的方案。
注意
此方案不适用于 Linux 节点池上的 Gen2 VM。
先决条件
现象
使用 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。 现有节点池不受影响。 关联的 VM 规模集将包含具有相同 Gen1 VM 的 VM。
原因 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 一起使用。
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区。