排查 AKS 群集升级期间的“SubnetIsFull”错误代码问题

本文介绍如何识别和解决尝试升级 Azure Kubernetes 服务 (AKS) 群集时发生的“SubnetIsFull”错误。

下面是错误消息的示例:

未能在 Kubernetes 服务“NAME>”<中缩放节点池代理池<名称>。 错误:VMSSAgentPoolReconciler 重试失败:Code='SubnetIsFull' Message='<SUBNET NAME>\ with address prefix <PREFIX>\ 没有足够容量的 IP 地址。 Details=[]

先决条件

本文需要 Azure CLI 2.0.65 或更高版本。 若要查找版本号,请运行 az --version。 如果必须安装或升级 Azure CLI,请参阅 如何安装 Azure CLI

有关升级过程的详细信息,请参阅升级 Azure Kubernetes 服务 (AKS) 群集中的“升级 AKS 群集”部分。

现象

AKS 群集升级失败,并收到“SubnetIsFull”错误消息。

原因

如果群集没有足够的 IP 地址来创建新节点,则会发生此错误。

计划执行升级或缩放操作时,请考虑所需的 IP 地址数。 如果在群集中配置的 IP 地址范围仅支持固定数量的节点,升级或缩放操作将失败。 有关详细信息,请参阅 Azure Kubernetes 服务 (AKS) 中配置 Azure CNI 网络的“为群集规划 IP 寻址”部分

解决方案

减少群集节点以保留升级的 IP 地址。

如果缩减不是选项,并且虚拟网络 CIDR 具有足够的 IP 地址,请尝试添加具有唯一子网节点池:

  1. 在较大子网的虚拟网络中添加新的用户节点池。
  2. 将原始节点池切换到系统节点池类型。
  3. 纵向扩展用户节点池。
  4. 纵向缩减原始节点池。

联系我们寻求帮助

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