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

如何让GKE中带NEG的内部Ingress LB支持跨区域访问?

问题

在us-west-1区域的GKE中部署了不暴露公网的内部服务serving-app,采用NEG+Ingress配置。该服务仅能在同区域内访问,us-east-1等其他区域的服务无法访问。

已知使用非NEG Ingress的普通LoadBalancer类型Service时,可通过注解实现内部负载均衡器跨区域访问,配置示例如下:

apiVersion: v1
kind: Service
metadata:
  name: serving-app
  labels:
    app: serving-app
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
    networking.gke.io/internal-load-balancer-allow-global-access: "true"
    cloud.google.com/neg: '{"ingress": false}'
spec:
  selector:
    app: serving-app
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80
  type: LoadBalancer
  loadBalancerIP: "a.b.c.d"

但当前采用的NEG+Ingress配置无法实现跨区域访问,配置如下:

NEG-Service 配置

apiVersion: v1
kind: Service
metadata:
  name: serving-app
  annotations:
    cloud.google.com/neg: '{"ingress": true}'
    cloud.google.com/backend-config: '{"default": "serving-app-backend-config"}'
spec:
  type: NodePort
  selector:
    app: serving-app
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 80

NEG-Ingress 配置

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: serving-app-neg-ingress
  annotations:
    kubernetes.io/ingress.class: "gce-internal"
    kubernetes.io/ingress.regional-static-ip-name: "serving-app-neg-static-ip"
spec:
  defaultBackend:
    service:
      name: serving-app
      port:
        number: 80

遇到的困境:

  • 找不到NEG+Ingress模式下对应全局访问的注解
  • 无法通过GCP控制台将LB改为全局类型
  • 未找到相关官方文档支持

请问是否可让该NEG-Ingress内部LB支持跨区域访问?或有什么替代方案?

解决方案

一、NEG+内部Ingress是否支持跨区域访问?

不行。GCP的内部区域Ingress(gce-internal类)本身是区域级资源,绑定的内部负载均衡器仅能在同区域内提供访问能力,不管是否使用NEG后端,当前都没有官方支持的方式让这类Ingress实现跨区域访问。你提到的networking.gke.io/internal-load-balancer-allow-global-access注解仅适用于LoadBalancer类型的内部服务,不适用于Ingress资源。

二、替代方案

1. 改用带NEG的全局内部负载均衡器(Global ILB)

创建全局内部负载均衡器,后端绑定跨区域的NEG(需确保目标区域与服务所在区域的VPC网络连通,可通过跨区域VPC或VPC对等连接实现)。注意:Kubernetes Ingress目前不支持自动创建全局内部LB,需通过GCP控制台或gcloud命令手动配置,后端服务需设为全局模式并绑定不同区域的NEG。

2. 使用跨区域VPC网络+内部LoadBalancer服务(带NEG)

放弃Ingress,沿用你之前提到的LoadBalancer类型内部服务配置:保留networking.gke.io/internal-load-balancer-allow-global-access: "true"注解,同时开启NEG(cloud.google.com/neg: '{"ingress": false}')。这种方式下,内部LB会被配置为允许全局访问,其他区域的服务只要在同一VPC或对等VPC中,即可通过LB的静态IP访问serving-app。

3. 部署跨区域服务网格(如Istio)

如果需要更灵活的跨区域流量管理,可部署Istio等服务网格。通过网格的服务发现和流量路由能力,实现跨区域服务间的通信,无需依赖GCP LB的全局访问特性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 20:51:19