You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

重启AKS负载均衡器时出现PublicIPReferencedByMultipleIPConfigs错误

解决AKS负载均衡器静态IP分配失败(外部IP )的问题

我之前在配置AKS静态IP负载均衡器时也踩过一模一样的坑,结合你遇到的400状态码错误,大概率是权限、IP配置或者资源匹配出了问题,咱们一步步来排查解决:

1. 先确认静态IP的基础配置是否合规

  • 一定要保证静态IP和你的AKS集群在同一个Azure区域,而且必须是标准SKU——AKS的负载均衡器只兼容标准SKU的公网IP,基本SKU的IP根本没法用
  • 注意静态IP的资源组:如果是你手动创建的IP,要么把它放到AKS的节点资源组(通常命名是MC_<你的资源组名>_<集群名>_<区域>),要么就得给AKS的身份(托管标识/服务主体)分配操作这个IP的权限

2. 验证AKS的身份权限是否足够

如果静态IP不在AKS的节点资源组里,AKS默认没有权限去操作这个IP,这是最常见的400错误原因:

  • 如果你用的是托管标识,给它分配Network Contributor角色到静态IP所在的资源组:
    az role assignment create --assignee <AKS托管标识的客户端ID> --role "Network Contributor" --scope /subscriptions/<你的订阅ID>/resourceGroups/<IP所在资源组名>
    
  • 要是用的是服务主体,把上面命令里的assignee换成服务主体的ID就行,同样分配这个角色

3. 检查Service YAML的配置细节

别小看配置里的细节,写错一个字段就会导致pending:

  • 确保loadBalancerIP填的是静态IP的公网IP地址,不是资源ID或者名称
  • 确认Service的type是LoadBalancer,而且loadBalancerSKU是Standard(必须和静态IP的SKU完全匹配)
    给你一个正确的配置片段参考:
    apiVersion: v1
    kind: Service
    metadata:
      name: my-target-service
    spec:
      type: LoadBalancer
      loadBalancerIP: 20.xx.xx.xx
      loadBalancerSKU: Standard
      ports:
      - port: 80
        targetPort: 8080
      selector:
        app: my-app
    

4. 排查静态IP是否已被占用

有时候你以为没在使用的IP,其实已经被其他资源绑定了:

  • 用这条命令检查IP的绑定状态:
    az network public ip show --name <静态IP名称> --resource-group <资源组名> --query "ipConfiguration.id"
    
    如果返回了非空的资源ID,说明这个IP已经被别的负载均衡器、VM或者资源占用了,得换一个新的静态IP

5. 最后手段:重置负载均衡器相关资源

如果上面都排查没问题,可以试试重置相关资源:

  • 先删除有问题的Service:
    kubectl delete service <你的服务名>
    
  • 等个3-5分钟,让Azure那边清理旧的负载均衡器配置,再重新应用正确的Service YAML
  • 要是还是不行,可以重启AKS的kube-proxy组件(生产环境建议先在测试集群验证):
    kubectl rollout restart daemonset kube-proxy -n kube-system
    

内容的提问来源于stack exchange,提问作者Kirlac

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:18:56