负载均衡器 PublicIPReferencedByMultipleIPConfigs 重启时出错

Kir*_*lac 6 azure-container-service

根据将静态 IP 地址与 Azure 容器服务 (AKS) 负载平衡器文档一起使用,我创建了一个静态 IP 并将其分配给负载平衡器。这在初始运行时运行良好,但现在我收到以下错误并且我的负载均衡器的外部 IP 卡住了<pending>(个人信息被省略):

无法确保服务默认/[...] 的负载均衡器:network.LoadBalancersClient#CreateOrUpdate:响应请求失败:StatusCode=400 -- 原始错误:autorest/azure:服务返回错误。Status=400 Code="PublicIPReferencedByMultipleIPConfigs" Message="公共IP地址/subscriptions/[...]/providers/Microsoft.Network/publicIPAddresses/[PublicIPName]被资源中的多个ipconfigs引用

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

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

Kir*_*lac 3

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

GitHub 问题回复

创建的第一个公共 IP 地址用于出口流量

微软文档

创建 LoadBalancer 类型的 Kubernetes 服务后,代理节点将添加到 Azure 负载均衡器池中。对于出站流,Azure 将其转换为负载均衡器上配置的第一个公共 IP 地址。

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

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