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

如何在EKS中实现Pod静态IP或修改请求源IP?

解决方案:EKS中Pod静态IP或修改请求源IP实现白名单访问

一、实现Pod静态IP(UI Pod固定IP)

在EKS集群中,可通过AWS VPC CNI插件直接为Pod分配静态IP,确保Pod重启后IP不变:

1. AWS VPC CNI静态IP配置

  • 前提:集群默认使用AWS VPC CNI插件(EKS默认配置),节点有足够的ENI和私网IP配额
  • 给UI Pod的Deployment添加以下annotations,强制分配静态IP:
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: ui-deployment
    spec:
      template:
        metadata:
          annotations:
            vpc.amazonaws.com/assign-static-ip: "true"
            # 为每个Pod分配独立ENI,避免IP复用冲突
            vpc.amazonaws.com/pod-ip-target: "1"
        spec:
          # 配合节点亲和性,将UI Pod固定在指定节点组,防止节点替换导致IP丢失
          affinity:
            nodeAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
                nodeSelectorTerms:
                - matchExpressions:
                  - key: node-group/role
                    operator: In
                    values:
                    - ui-static-node
    
  • 注意:删除Pod重建时,只要节点ENI资源充足,会重新分配原IP;若节点被销毁,需重新将新IP加入白名单。

2. StatefulSet配合静态IP

  • 使用StatefulSet部署UI应用,结合VPC CNI静态IP注解,StatefulSet的Pod名称固定,IP分配更稳定:
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: ui-statefulset
    spec:
      serviceName: ui-service
      replicas: 1
      template:
        metadata:
          annotations:
            vpc.amazonaws.com/assign-static-ip: "true"
            vpc.amazonaws.com/pod-ip-target: "1"
        spec:
          containers:
          - name: ui-container
            image: your-ui-image:tag
    

二、修改请求源IP(让后端看到固定代理IP)

通过专用代理转发流量,将UI请求的源IP替换为代理的固定IP,只需将代理IP加入后端白名单:

1. 带静态IP的Nginx代理方案

  • 先部署一个单副本Nginx代理Pod,用上述静态IP方案给它分配固定IP
  • 配置UI应用,将所有后端请求指向Nginx代理的IP
  • Nginx配置反向代理并确保SN生效,示例配置:
    server {
      listen 80;
      location / {
        proxy_pass http://tomcat-service:8080;
        proxy_set_header Host $host;
        # 后端可通过X-Forwarded-For获取真实UI IP(若需),但白名单只需加Nginx的静态IP
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
      }
    }
    
  • 若需高可用,可部署多副本Nginx代理,每个都分配静态IP,将所有代理IP加入后端白名单。

2. Service SNAT配置

  • 创建一个ClusterIP类型的代理Service,配置externalTrafficPolicy: Cluster(默认),此模式下源IP会被替换为节点IP,需将节点IP加入白名单(不推荐,节点IP可能变更)
  • 若使用IPVS模式的kube-proxy,可配置Service的local-ip指定固定IP,实现SNAT到该IP。

注意事项

  • 静态IP方案需提前确认AWS账户的ENI和私网IP配额,避免资源不足
  • 代理方案需确保代理的可用性,可结合探针和自动扩缩容
  • 若后续有优化空间,建议替换IP白名单为更符合K8s生态的认证方式(如ServiceAccount令牌、OAuth2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 17:50:57