创建或更新 AKS 群集时出现 InvalidLoadBalancerProfileAllocatedOutboundPorts 错误

本文介绍如何识别和解决尝试创建或更新 Microsoft Azure Kubernetes 服务 (AKS) 群集时发生的“InvalidLoadBalancerProfileAllocatedOutboundPorts”错误代码。

先决条件

Azure CLI 版本 2.53.0 或更高版本。 若要查找已安装的版本,请运行 az --version 该命令。

症状

AKS 群集创建或更新作失败,并返回以下错误消息:

代码:InvalidLoadBalancerProfileAllocatedOutboundPorts
消息:负载均衡器配置文件中分配的端口 8000 在预配的节点数和 IP 数的情况下,超出了允许的范围。 节点总数为 9 需要 72000 个端口,但在有 1 个出站公共 IP 的情况下,只能提供 64000 个端口。 有关更多详细信息,请参阅 https://aka.ms/aks/slb-ports

原因

在具有出站类型的 LoadBalancer群集中,来自群集节点(包括 Pod 中运行的应用程序的流量)的流量通过 AKS 管理的负载均衡器出口,该负载均衡器依赖于源网络地址转换 (SNAT) 端口建立这些出站连接。

默认情况下,为每个群集分配一个出站前端 IP 地址,该地址总共允许 64,000 个 SNAT 端口,并且群集中的每个辅助角色节点分配了这些端口的共享。 例如,如果群集有 50 个节点或更少节点,则每个工作器节点分配 1,024 个端口。 在群集中运行的应用程序需要建立大量出站连接的情况下,可用的 SNAT 端口的默认数目可能不足,这会导致 SNAT 端口耗尽。

若要解决 SNAT 端口耗尽问题,请使用以下一种或两种方法:

  • 更改出站前端 IP 地址数。 每个 IP 地址提供额外的 64,000 个 SNAT 端口。
  • 更改分配给每个工作节点的 SNAT 端口数。

当指定的节点计数、出站前端 IP 地址数和每个节点分配的端口数不构成可行的配置时,会发生“InvalidLoadBalancerProfileAllocatedOutboundPorts”错误。

解决方案

若要解决“InvalidLoadBalancerProfileAllocatedOutboundPorts”错误,请执行以下步骤:

  1. 使用以下公式检查所需配置是否可行:

    64,000 ports per IP / <outbound ports per node> * <number of outbound IPs> = <maximum number of nodes in the cluster>
    

    注释

    执行此检查时,请确保考虑在群集升级及其他操作过程中出现的节点激增。 AKS 默认为一个用于升级作的缓冲区节点,但可以使用 maxSurge 参数修改此数字。

  2. 更改群集的节点计数、出站前端 IP 地址数或每个节点的 SNAT 端口数。

    有关如何配置分配的出站端口以及可能需要的端口数的示例和计算的详细信息,请参阅 配置分配的出站端口

参考文献

用于出站连接的源网络地址转换 (SNAT)

联系我们以获得帮助

如果您有任何疑问或需要帮助,可以创建支持请求,或咨询Azure社区支持。 您还可以向Azure反馈社区提交产品反馈。