本文介绍如何识别并解决在尝试扩展 Microsoft Azure Kubernetes 服务(AKS)群集时出现的SubnetIsFull
错误。
尝试缩放 AKS 群集时,会收到以下错误消息:
“code”: “SubnetIsFull”
“message”: “地址前缀为 <subnet-prefix> 的子网 <subnet-name> 没有足够的容量来容纳 <new-ip-count> 个 IP 地址。”
若要将节点添加到 AKS 群集(横向扩展),必须使用部署节点池的子网中的更多 IP 地址。 成功完成群集缩放操作所需的新 IP 地址的确切数量因群集使用的网络插件而异。 有关如何在这些网络模型中分配 IP 地址的信息,请参阅 AKS 中应用程序的网络概念。
备注
Azure 为每个子网保留五个 IP 地址。 子网中的第一个地址用于网络 ID,然后有三个地址供 Azure 内部使用。 子网中的最后一个地址是为广播数据包保留的。 有关详细信息,请参阅使用这些子网中的 IP 地址是否有任何限制?
目前不支持尝试更新子网的无类域间路由(CIDR)地址空间。 若要将工作负荷迁移到较大子网中的新节点池,请执行以下步骤:
在群集虚拟网络中创建一个子网,其中包含比现有子网更大的 CIDR 地址范围。 有关如何适当调整群集子网大小的信息,请参阅 群集的计划 IP 寻址。
通过运行 az aks nodepool add 命令和 --vnet-subnet-id
参数,在新子网上创建节点池。
通过清空旧节点池中的节点,将工作负荷迁移到新节点池。 有关如何安全地清空 AKS 工作节点的信息,请参阅 “安全清空节点”。
通过运行 az aks nodepool delete 命令删除原始节点池。
若要避免 SubnetIsFull
Azure Kubernetes 服务(AKS)中出现的问题,请遵循与子网大小调整、IP 地址管理和节点池策略相关的最佳做法。 以下是一些关键建议:
- 规划未来增长:创建子网时,请确保它们足够大,以适应未来的增长。 建议保留的 IP 地址数超过当前所需的 IP 地址,以避免在群集缩放时耗尽空间。
- 使用更大的子网 CIDR:如果可能,请使用更大的子网 CIDR 来提供更多 IP 地址。 此策略有助于容纳更多节点和 Pod,而不会遇到 IP 耗尽问题。
- 监视 IP 使用情况:若要在潜在问题变得关键之前识别潜在问题,请定期监视子网中的 IP 地址使用情况。 Azure Monitor 等工具可帮助跟踪 IP 地址消耗。
- 优化 IP 分配:确保有效分配 IP 地址。 避免不必要的保留 IP 地址。 若要释放空间,请释放任何未使用的 IP 地址。
- 使用多个节点池:请考虑使用具有不同子网的节点池来分配 IP 地址负载。 此策略可帮助缓解单个子网中 IP 地址耗尽的风险。
第三方联系人免责声明
Microsoft 会提供第三方联系信息来帮助你查找有关本主题的其他信息。 此联系信息可能会更改,恕不另行通知。 Microsoft 不保证第三方联系信息的准确性。
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区。