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

如何让EKS服务仅在同VPC内访问并与AWS Lambda通信?

EKS实现VPC内专属访问端点的方案

当然可以通过EKS结合AWS原生能力实现,针对你的需求(同VPC内的Lambda访问EKS服务、不暴露公网),推荐以下两种核心方案:

1. 内部负载均衡器(Internal LoadBalancer)

这是最适配的方案,创建Service时指定AWS内部型负载均衡器,端点仅在VPC内可见:

  • 创建type: LoadBalancer类型的Service,添加AWS专属注解开启内部LB:
    apiVersion: v1
    kind: Service
    metadata:
      name: service-a
      annotations:
        service.beta.kubernetes.io/aws-load-balancer-internal: "true"
    spec:
      type: LoadBalancer
      selector:
        app: service-a
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8080
    
  • AWS会自动创建一个仅VPC内可访问的NLB/ALB,Lambda处于同VPC即可通过LB的内网地址访问服务A。
  • 额外安全加固:给LB的安全组配置规则,仅允许Lambda所在安全组或VPC CIDR段访问,进一步缩小访问范围。

2. NodePort + 安全组/网络策略

如果不想用负载均衡器,可选择NodePort配合访问控制:

  • 创建type: NodePort的Service,EKS节点会在指定端口暴露服务。
  • 配置EKS节点的安全组,仅允许VPC内的IP段(如Lambda的VPC CIDR)访问该NodePort端口,阻断公网流量。
  • 搭配Kubernetes NetworkPolicy,在集群层面限制Service A仅接收来自VPC内IP的请求,实现双层防护:
    apiVersion: networking.k8s.io/v1
    kind: NetworkPolicy
    metadata:
      name: restrict-service-a-to-vpc
    spec:
      podSelector:
        matchLabels:
          app: service-a
      ingress:
      - from:
        - ipBlock:
            cidr: 10.0.0.0/16 # 替换为你的VPC CIDR
        ports:
        - protocol: TCP
          port: 8080
    

关于ClusterIP的补充

你提到的ClusterIP仅能被EKS集群内部的Pod访问,Lambda不在集群Pod网络中,因此无法直接通过ClusterIP访问服务,所以需要用到上述两种方案来打通VPC内的跨资源访问。

内容的提问来源于stack exchange,提问作者opensource-developer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 20:52:48