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

GKE中如何限制Kubernetes服务仅向同子网服务器开放?

在GKE中限制服务仅对同子网虚拟机开放的方案

针对你遇到的问题,这里提供几个更精准私密的解决方案,替代宽泛的公网IP范围限制:

方案1:使用GCP内部负载均衡器(Internal LoadBalancer)

这是最适配你场景的方案,内部LB本身仅在VPC内部可见,不会分配公网IP,天然具备私密性,同时可以精准锁定访问来源为目标子网:

  1. 定义Service时添加cloud.google.com/load-balancer-type: "internal"注解,强制创建内部LB
  2. 用子网的内部CIDR而非公网IP范围配置loadBalancerSourceRanges,直接限定同子网内的所有资源

示例YAML:

apiVersion: v1
kind: Service
metadata:
  name: your-internal-service
  annotations:
    cloud.google.com/load-balancer-type: "internal" # 标记为内部负载均衡器
spec:
  type: LoadBalancer
  loadBalancerIP: 10.10.0.50 # 可选:指定子网内的静态内部IP,方便虚拟机固定访问
  ports:
  - port: 80
    targetPort: 8080 # 对应Pod的服务端口
  selector:
    app: your-app-label # 匹配你的Pod标签
  loadBalancerSourceRanges:
  - 10.10.0.0/24 # 替换为你的子网内部CIDR

部署后,同子网的虚拟机可直接通过这个内部LB的IP访问服务,其他VPC外或非子网内的资源无法访问,完全不需要依赖虚拟机的公网IP。

方案2:NodePort服务+NetworkPolicy+GCP防火墙规则

如果不想使用负载均衡器,可以通过多层限制实现需求:

  1. 创建NodePort服务,让集群节点开放指定端口
  2. 用Kubernetes NetworkPolicy限制仅同子网内部IP能访问Pod的服务端口
  3. 在GCP控制台添加防火墙规则,允许同子网虚拟机访问节点的NodePort端口

NodePort服务示例:

apiVersion: v1
kind: Service
metadata:
  name: your-nodeport-service
spec:
  type: NodePort
  ports:
  - port: 80
    targetPort: 8080
    nodePort: 30080 # 可选:指定固定端口,避免随机分配
  selector:
    app: your-app-label

NetworkPolicy示例(限制Pod访问来源):

apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
  name: restrict-subnet-access
spec:
  podSelector:
    matchLabels:
      app: your-app-label
  policyTypes:
  - Ingress
  ingress:
  - from:
    - ipBlock:
        cidr: 10.10.0.0/24 # 你的子网CIDR
    ports:
    - protocol: TCP
      port: 8080

GCP防火墙规则配置:

  • 方向:ingress
  • 目标:GKE节点的标签(比如gke-<你的集群名>-node)
  • 来源IP范围:你的子网CIDR(10.10.0.0/24)
  • 端口:NodePort的端口(30080)
  • 动作:允许

补充说明

你之前尝试ClusterIP失败的原因是:ClusterIP是Kubernetes集群内部的虚拟IP,仅集群内的Pod和节点能直接识别访问,外部虚拟机(即使同子网)无法识别该IP的路由,因此需要通过内部LB或NodePort这类暴露方式让虚拟机访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:56:52