本文介绍如何识别并解决尝试升级 Azure Kubernetes 服务(AKS)群集时发生的“SubnetIsFull”错误。
下面是错误消息的示例:
未能在 Kubernetes 服务“<NAME>”中缩放节点池“<代理池名称>”。 错误:VMSSAgentPoolReconciler 重试失败:Code='SubnetIsFull' Message='<SUBNET NAME>\ 使用地址前缀 <PREFIX>\ 没有足够的 IP 地址容量。 详细信息=[]
先决条件
本文需要 Azure CLI 2.0.65 或更高版本。 若要查找版本号,请运行 az --version。 如果必须安装或升级 Azure CLI,请参阅 如何安装 Azure CLI。
有关升级过程的详细信息,请参阅升级 Azure Kubernetes 服务 (AKS) 群集中的“升级 AKS 群集”部分。
症状
AKS 群集升级失败,并收到“SubnetIsFull”错误消息。
原因
如果群集没有足够的 IP 地址来创建新节点,则会发生此错误。
计划执行升级或缩放作时,请考虑所需的 IP 地址数。 如果在群集中配置的 IP 地址范围仅支持固定数量的节点,升级或缩放作将失败。 有关详细信息,请参阅 Azure Kubernetes 服务 (AKS) 群集的 IP 地址规划。
解决方案
减少群集节点以保留升级的 IP 地址。
如果缩减不是选项,并且虚拟网络 CIDR 具有足够的 IP 地址,请尝试添加具有 唯一子网的节点池:
- 在较大子网的虚拟网络中添加新的用户节点池。
- 将原始节点池切换到系统节点池类型。
- 扩展用户节点池。
- 缩减原始节点池。