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

Azure负载均衡器如何替换自定义公网IP绑定K8s Django应用

Azure AKS 负载均衡器替换指定公网IP操作方案

你无法在负载均衡器面板直接修改IP的核心原因是:AKS集群的负载均衡器由云控制器全托管,手动在Azure门户修改的配置会被集群的调和逻辑自动覆盖,所有配置变更需要通过修改Kubernetes资源完成。


前置校验

操作前先确认以下条件满足,否则会配置失败:

  • 待替换的目标公网IP(2.3.4.5)和AKS集群、现有负载均衡器属于同一Azure区域,且IP的SKU和现有负载均衡器SKU一致(当前AKS默认使用Standard SKU负载均衡器,对应公网IP也必须是Standard SKU)
  • 目标公网IP的分配方式已经设置为静态,动态IP无法固定绑定
  • 如果目标公网IP存放在非AKS自动生成的MC_开头节点资源组中,需要提前给AKS集群的托管标识授予目标IP所在资源组的Network Contributor角色权限

操作步骤

  1. 获取目标公网IP的资源信息
    在本地Azure CLI或者Azure Cloud Shell中执行以下命令,替换占位符为你的实际资源信息:
    az network public-ip show --resource-group <目标公网IP所在资源组名称> --name <目标公网IP的资源名称> --query id -o tsv
    
    留存命令输出的资源ID字符串备用。
  2. 修改Django应用对应的LoadBalancer服务配置
    执行命令编辑Kubernetes中暴露Django服务的LoadBalancer类型资源:
    kubectl edit svc <Django应用对应的LoadBalancer服务名> -n <服务所在命名空间>
    
    在打开的YAML配置中,找到metadata.annotations字段,添加以下两个注解,替换掉原有旧的公网IP相关注解:
    metadata:
      annotations:
        service.beta.kubernetes.io/azure-pip-name: <目标公网IP的资源名称>
        service.beta.kubernetes.io/azure-load-balancer-ipv4: 2.3.4.5
    
    保存文件退出编辑器即可,AKS云控制器会在1~2分钟内自动完成负载均衡器的前端IP配置更新。
  3. 验证生效
    执行以下命令查看服务状态:
    kubectl get svc <Django应用对应的LoadBalancer服务名> -n <服务所在命名空间>
    
    当返回结果中EXTERNAL-IP字段显示为2.3.4.5时,说明IP替换完成。此时直接访问http://2.3.4.5:8000确认服务连通性正常即可,你提前绑定到该IP的example.com域名不需要额外修改解析,等待本地DNS缓存过期后即可正常通过域名访问应用。

常见问题处理

  • 服务EXTERNAL-IP长期处于Pending状态:优先检查目标公网IP的SKU是否与负载均衡器匹配,再检查AKS托管标识是否拥有目标IP资源的操作权限
  • 手动在Azure门户修改LB IP后自动还原:属于正常现象,所有AKS托管的负载均衡器配置都以Kubernetes中Service资源的定义为准,不要直接在门户修改LB配置
  • IP更新后无法访问:检查负载均衡器的后端池是否正常关联集群节点,对应资源的网络安全组是否放行了8000端口的入站规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 23:42:25