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

Azure AKS中如何为Nginx Pod配置静态IP实现自动化访问?

关于AKS中Nginx Pod固定访问IP的解决方案

首先明确:Kubernetes(包括AKS)不支持直接给Pod设置固定静态IP。Pod的IP是集群网络插件动态分配的,Pod重启、重建甚至集群扩容都会导致IP变更,这是K8s的核心设计逻辑,强行绑定静态IP会破坏集群的弹性和自愈能力。

下面是两种符合K8s设计的解决方案,满足你固定IP访问的需求:

场景1:集群内部访问(比如其他Pod/组件调用)

创建ClusterIP类型的Service,Service会自动分配一个固定的集群内部IP(只要Service不被删除,IP就不会变更),并自动路由到匹配的Nginx Pod。

示例YAML配置:

apiVersion: v1
kind: Service
metadata:
  name: nginx-internal-service
spec:
  selector:
    app: nginx  # 需与你的Nginx Pod的label完全匹配
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80  # 对应Nginx Pod暴露的端口
  type: ClusterIP

创建后,集群内部可通过nginx-internal-service(K8s内部域名)或Service的固定IP访问Nginx,无需关注Pod IP的变化。

场景2:外部互联网访问

使用LoadBalancer类型的Service绑定Azure静态公共IP,实现外部固定IP访问:

  1. 先在Azure门户或CLI创建静态公共IP,注意IP的资源组必须是AKS集群的节点资源组(格式通常为MC_<你的资源组名>_<AKS集群名>_<区域>)。
  2. 创建LoadBalancer Service时,通过注解指定静态IP:
apiVersion: v1
kind: Service
metadata:
  name: nginx-external-service
  annotations:
    service.beta.kubernetes.io/azure-load-balancer-static-ip: "13.xx.xx.xx"  # 替换为你的静态公共IP
spec:
  selector:
    app: nginx
  ports:
    - protocol: TCP
      port: 80
      targetPort: 80
  type: LoadBalancer

部署后,外部即可通过这个静态公共IP稳定访问Nginx Pod,即使Pod重建或集群更新,IP也不会改变。

进阶方案:多服务统一入口(Ingress)

如果需要暴露多个服务,推荐使用Ingress Controller:

  • 部署AKS官方的NGINX Ingress Controller,给其对应的LoadBalancer Service绑定静态公共IP。
  • 创建Ingress规则,将外部请求路由到Nginx Pod。
    这种方式可以用一个静态IP管理多个服务的访问,更适合复杂场景。

内容的提问来源于stack exchange,提问作者Eddi-88

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 03:57:09