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

Google Cloud Kubernetes带固定外部IP的代理自动扩缩容方案咨询

GKE代理服务绑定多固定出口IP的可行方案

核心实现思路

通过专用节点池绑定静态IP + Pod调度规则 + 内部负载均衡的组合,实现每个代理Pod对应一个固定出口IP,同时支持自动扩缩容,完全匹配你的需求。

具体操作步骤

1. 批量创建静态外部IP

先根据你需要的最大固定IP数量,在GCP中创建对应数量的静态IP:

# 示例创建3个静态IP,可根据需求调整数量和名称
gcloud compute addresses create proxy-ip-1 proxy-ip-2 proxy-ip-3 --region=你的集群区域

2. 为每个静态IP创建专属节点池

每个节点池只部署1个节点,且强制该节点的出口IP绑定对应的静态IP,同时给节点打标签和污点,方便后续Pod调度:

# 为第一个静态IP创建节点池,其余IP重复此命令修改参数即可
gcloud container node-pools create proxy-node-pool-1 \
  --cluster=你的集群名称 \
  --region=你的集群区域 \
  --num-nodes=1 \
  --machine-type=e2-medium \ # 可根据代理资源需求调整机型
  --nat-external-ips=proxy-ip-1 \ # 绑定对应静态IP
  --node-labels=proxy-ip=ip-1 \ # 标记节点所属IP组
  --node-taints=proxy-ip=ip-1:NoSchedule # 防止其他Pod调度到该节点

3. 部署代理服务器Deployment

配置Deployment的调度规则,让Pod只能调度到上述专属节点池的节点上,同时设置初始副本数与静态IP数量一致,后续通过HPA自动扩缩容:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: proxy-server
spec:
  replicas: 3 # 与静态IP数量一致
  selector:
    matchLabels:
      app: proxy-server
  template:
    metadata:
      labels:
        app: proxy-server
    spec:
      # 强制Pod调度到带有proxy-ip标签的节点
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: proxy-ip
                operator: Exists
      # 容忍节点上的污点
      tolerations:
      - key: "proxy-ip"
        operator: "Exists"
        effect: "NoSchedule"
      containers:
      - name: proxy
        image: squid:latest # 替换成你实际使用的代理镜像
        ports:
        - containerPort: 3128 # 你的代理监听端口
        resources:
          requests:
            cpu: "100m"
            memory: "256Mi"
          limits:
            cpu: "500m"
            memory: "512Mi"

4. 配置内部负载均衡Service

创建支持轮询模式的内部LB,让其他部署可以通过该服务访问代理:

apiVersion: v1
kind: Service
metadata:
  name: proxy-internal-lb
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
    networking.gke.io/internal-load-balancer-subnet: "你的内部子网名称" # 替换成实际子网
spec:
  type: LoadBalancer
  selector:
    app: proxy-server
  ports:
  - port: 3128
    targetPort: 3128
  sessionAffinity: None # 明确设置轮询模式

5. 配置HPA自动扩缩容

根据CPU/内存使用率自动调整Pod数量,上限不超过静态IP总数:

apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
  name: proxy-hpa
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: proxy-server
  minReplicas: 1
  maxReplicas: 3 # 等于静态IP总数,避免超出固定IP范围
  metrics:
  - type: Resource
    resource:
      name: cpu
      target:
        type: Utilization
        averageUtilization: 70 # CPU使用率超过70%时自动扩容

方案优势

  • 每个Pod对应独立的固定出口IP,完全满足多固定IP出网需求
  • 基于节点池绑定静态IP,无需复杂的网络路由配置
  • 结合HPA实现自动扩缩容,扩缩容范围受控于静态IP数量,不会出现无IP可用的情况
  • 内部LB原生支持轮询模式,适配业务访问需求

大规模场景替代方案

如果需要数十个以上的固定IP,可改用Cloud NAT多网关 + 子网绑定的模式:

  • 创建多个Cloud NAT网关,每个网关绑定一组静态IP
  • 为每个NAT网关关联独立的子网,在对应子网创建节点池
  • 通过节点亲和性将Pod调度到对应子网的节点上,实现Pod出网使用对应NAT的固定IP

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 12:03:28