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

Kubernetes Azure LoadBalancer 同一静态IP多端口访问实现咨询

结论

可以使用同一个负载均衡IP 10.1.1.100的9112端口访问app2,Azure LoadBalancer支持同一个静态IP绑定不同端口转发到不同后端服务,以下是两种可选配置方案:


方案1:新增独立app2 Service复用同一IP(推荐)

该方案无需修改原有app1的Service配置,服务之间隔离性好,改动成本最低。Azure LB会自动将两个Service的端口规则合并到同一个IP下,只要端口不冲突即可正常运行。
新增app2 Service配置如下:

apiVersion: v1
kind: Service
metadata:
  name: "app2-service"
  annotations:
    service.beta.kubernetes.io/azure-load-balancer-internal: "true"
spec:
  selector:
    app: app2
  type: LoadBalancer
  loadBalancerIP: 10.1.1.100
  ports:
    - port: 9112
      targetPort: 9112

配置提交后可执行kubectl get svc确认两个Service的EXTERNAL-IP均为10.1.1.100,即可正常通过对应端口访问两个应用。


方案2:合并为单个多端口LoadBalancer Service

适合需要统一管理所有应用端口的场景,由于单个Service默认只能通过selector匹配一组标签的Pod,因此需要改为无selector的Service,手动关联EndpointSlice绑定两个应用的Pod地址。

步骤1:修改原有Service配置,删除selector,新增多端口

apiVersion: v1
kind: Service
metadata:
  name: "app-combined-service"
  annotations:
    service.beta.kubernetes.io/azure-load-balancer-internal: "true"
spec:
  type: LoadBalancer
  loadBalancerIP: 10.1.1.100
  ports:
    - name: app1
      port: 9111
      targetPort: 9111
    - name: app2
      port: 9112
      targetPort: 9112

步骤2:创建EndpointSlice关联两个应用的Pod

apiVersion: discovery.k8s.io/v1
kind: EndpointSlice
metadata:
  name: app-combined-endpointslice
  labels:
    kubernetes.io/service-name: app-combined-service
addressType: IPv4
ports:
  - name: app1
    port: 9111
  - name: app2
    port: 9112
endpoints:
  - addresses:
      - <替换为app1 Pod的实际IP>
    ports:
      app1: 9111
  - addresses:
      - <替换为app2 Pod的实际IP>
    ports:
      app2: 9112

注意:该方案需要在Pod重建、IP变更时手动更新EndpointSlice,若无特殊统一管理需求优先选择方案1。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:36:04