InsufficientSubnetSize 错误代码

本文介绍如何解决InsufficientSubnetSize尝试部署使用高级网络的 Microsoft Azure Kubernetes 服务 (AKS) 群集时发生的错误。 本文适用于 Kubernetes 群集和 Azure 容器网络接口 (CNI) 群集。

现象

此错误 InsufficientSubnetSize 发生在以下任一操作期间。 AKS 诊断中 也遇到此错误,该诊断会主动发现子网大小不足等问题。

操作 1:缩放 AKS 群集或 AKS 节点池

群集类型 症状:
子网 中的可用 IP 地址数小于...
Kubenet 请求的新节点数。
Azure CNI 请求 的新节点数是 参数中的 --max-pod 节点池值的时间。
Azure CNI 覆盖 请求的新节点数。
(在使用自动缩放程序的节点池中,节点数是参数中的 --max-count 值。

操作 2:升级 AKS 群集或 AKS 节点池

群集类型 症状:
子网 中的可用 IP 地址数小于...
Kubenet 必须升级的缓冲区节点数。
Azure CNI 必须升级 的缓冲区节点数是 参数中的 --max-pod 节点池值的时间。
Azure CNI 覆盖 必须升级的缓冲区节点数。
(在使用自动缩放程序的节点池中,节点数是参数中的 --max-count 值。

默认情况下,AKS 群集设置最大激增(升级缓冲区)值 1(1)。 但是,可以通过设置节点池的最大激增值来自定义此升级行为。 此操作会增加完成升级所需的可用 IP 地址数。

操作 3:创建 AKS 群集或添加 AKS 节点池

群集类型 症状:
子网 中的可用 IP 地址数小于...
Kubenet 请求的节点数。
Azure CNI 请求 的节点数是 参数中的 --max-pod 节点池值的时间。
Azure CNI 覆盖 请求的节点数。
(在使用自动缩放程序的节点池中,节点数是参数中的 --max-count 值。

原因

用于群集的子网在其无类域间路由 (CIDR) 地址空间中不再具有可用的 IP 地址,以便成功分配资源。

群集类型 要求
Kubenet 群集中每个 节点 的足够 IP 空间
Azure CNI 群集中每个 节点和 Pod 的足够 IP 空间
Azure CNI 覆盖 群集中每个 节点 的足够 IP 空间

详细了解 Azure CNI 的设计,以便将 IP 地址分配给 Pod

解决方案

目前不支持尝试更新现有节点池中的子网 CIDR 地址空间。 若要将工作负荷迁移到较大子网中的新节点池,请执行以下步骤:

  1. 在群集虚拟网络中创建一个子网,其中包含比现有子网更大的 CIDR 地址范围。 有关如何为群集适当调整子网大小的信息,请参阅 为群集规划 IP 寻址。

  2. 通过运行 az aks nodepool add 命令和 --vnet-subnet-id 参数,在新子网上创建节点池。

  3. 通过清空旧节点池中的节点,将工作负荷迁移到新节点池。 有关如何安全地清空 AKS 工作节点的信息,请参阅 “安全地清空节点”。

  4. 通过运行 az aks nodepool delete 命令删除原始节点池。

第三方联系人免责声明

Microsoft 会提供第三方联系信息来帮助你查找有关本主题的其他信息。 此联系信息可能会更改,恕不另行通知。 Microsoft 不保证第三方联系信息的准确性。

联系我们寻求帮助

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