负载均衡器 PublicIPReferencedByMultipleIPConfigs 重启时出错

Load balancer PublicIPReferencedByMultipleIPConfigs error on restart

根据 Use a static IP address with the Azure Container Service (AKS) load balancer 文档,我创建了一个静态 IP 并将其分配给负载均衡器。这在初始 运行 上运行良好,但现在我收到以下错误并且我的负载均衡器的外部 ip 卡住 <pending>(省略个人信息):

Failed to ensure load balancer for service default/[...]: network.LoadBalancersClient#CreateOrUpdate: Failure responding to request: StatusCode=400 -- Original Error: autorest/azure: Service returned an error. Status=400 Code="PublicIPReferencedByMultipleIPConfigs" Message="Public ip address /subscriptions/[...]/providers/Microsoft.Network/publicIPAddresses/[PublicIPName] is referenced by multiple ipconfigs in resource

据我所知,这并没有被多个配置引用 - 只是我正在尝试 运行 的负载平衡器服务。从我的 yaml 文件中删除 loadBalancerIP 选项允许它工作,但我不认为服务器地址是静态的——这对于试图与这个容器通信的应用程序来说并不理想

这应该发生吗?有没有办法配置这个,以便在容器重启后可以重复使用相同的IP?

鉴于此问题似乎仍然存在,对于遇到此问题的任何其他人来说,似乎 Azure 负载均衡器资源本身可能正在使用第一个配置的静态 IP 地址。

GitHub issue response:

the first public IP address created is used for egress traffic

Microsoft Docs:

Once a Kubernetes service of type LoadBalancer is created, agent nodes are added to an Azure Load Balancer pool. For outbound flow, Azure translates it to the first public IP address configured on the load balancer.

据我所知,一旦你提供了一个 IP 地址并配置了一个 AKS 负载平衡器来使用它,该 IP 就会被 Azure 中提供的负载平衡器资源获取。我最好的猜测是,当 Kubernetes 尝试使用相同的 IP 地址提供新的负载均衡器时,如果以前的 Azure 负载均衡器仍然存在,IP 配置将失败,因为它仍在使用中。

解决方法是提供一个额外的静态 IP(一个专门用于 Azure 负载均衡器资源,一个用于实际的 AKS 负载均衡器服务)以避免冲突。这显然不理想,但它解决了问题...