API Gateway无法连接私有子网部署的EKS集群问题咨询
私有子网EKS对接API Gateway连通性排查指南
按从上层到下层的链路顺序逐个校验配置,公有子网部署正常说明EKS业务本身无问题,故障基本出在跨子网路由、安全组、资源类型匹配这三类配置疏漏上:
VPC Link 配置校验
- 确认VPC Link关联的目标NLB和EKS集群处于同一VPC,VPC Link绑定的子网必须为可路由到EKS私有子网的私有子网,禁止绑定公有子网对接内部NLB,否则会出现路由不对称丢包
- 校验VPC Link绑定的安全组规则:必须放通API Gateway内部服务地址段到NLB监听端口的入方向流量,不要使用默认拒绝所有入方向的安全组绑定VPC Link
- 资源类型匹配校验:REST API场景下必须使用面向NLB的VPC Link版本,不要误配为对接PrivateLink的VPC Endpoint类型VPC Link;HTTP API场景下确认VPC Link的可用区覆盖和NLB可用区完全一致,不要出现可用区断层。
NLB 配置校验
- 确认NLB的Scheme为
internal,私有子网EKS禁止绑定公网Scheme的NLB,否则NLB回包会优先走公网网卡导致链路中断 - 目标组配置校验:
- 目标类型选择匹配部署模式:直接挂载EKS EC2节点选
instance类型,对接VPC-CNI分配的Pod直连IP选ip类型 - 健康检查规则:检查端口、路径和EKS暴露的Service/Ingress配置一致,EKS节点、Pod的安全组必须放通NLB健康检查源地址段(VPC预留网段)的访问权限,健康检查失败会直接导致所有目标被标记为不可用
- 目标类型选择匹配部署模式:直接挂载EKS EC2节点选
- 子网关联校验:NLB至少关联2个及以上可用区的私有子网,关联子网的路由表必须存在到EKS私有子网、VPC Link子网的本地路由,不要将NLB单独部署在公有子网跨网段对接私有EKS
- 特性开关校验:如果开启了NLB客户端源IP保留,必须在EKS节点、Pod所在子网的路由表中添加到VPC Link子网段的静态回程路由,否则回包会默认转发到NAT网关导致连接超时;跨可用区负载均衡开启时,要确认所有关联可用区的路由、安全组规则一致,避免单可用区配置疏漏导致部分流量异常。
EKS 集群侧配置校验
- 安全组规则校验:EKS节点安全组、节点上运行的节点本地防火墙(如果有自定义配置)必须放通NLB所属子网段、VPC Link所属子网段到Service监听端口、NodePort端口范围的入方向流量,公有子网部署时默认放通同VPC网段流量,切私有子网后自定义安全组很容易遗漏该规则
- 子网标签校验:给EKS部署所在的私有子网打标签
kubernetes.io/role/internal-elb=1,避免AWS Load Balancer Controller无法识别内部子网,导致Service同步失败、目标组无注册节点;如果用低版本AWS Load Balancer Controller(2.4版本以下),必须升级到2.4及以上稳定版本,低版本对内部NLB的适配存在已知路由bug - Service注解校验:EKS上对接NLB的Service必须添加注解
service.beta.kubernetes.io/aws-load-balancer-internal: "true",不要沿用公有子网部署时的公网LB注解,否则控制器会自动尝试找公网子网挂载NLB,导致目标组注册异常 - 路由表校验:EKS私有子网的路由表不要配置指向IGW的公网默认路由,同VPC内部通信走本地路由即可,需要出公网的场景默认路由指向NAT网关,避免路由优先级问题导致内部流量被转发到公网丢弃。
分层连通性验证步骤
按链路顺序从下往上验证,快速定位故障点:
- 在EKS同私有子网的测试EC2实例上,直接访问业务Service的CLUSTER-IP和端口,确认EKS内部业务访问正常
- 在VPC内部任意私有子网的测试EC2上访问NLB的DNS名称和监听端口,确认NLB到EKS的链路连通,这一步不通故障点在NLB和EKS侧,和API Gateway无关
- 在VPC Link绑定的子网内启动测试实例访问NLB地址,确认VPC Link子网到NLB的链路连通,这一步不通故障点在路由表或安全组
- 最后在API Gateway控制台发起接口测试,根据返回码定位问题:
- 返回
503 Service Unavailable:VPC Link到NLB的链路不通,优先查VPC Link配置、NLB是否正常监听 - 返回
504 Gateway Timeout:NLB到EKS的链路不通,优先查安全组、路由表、目标组健康检查状态 - 返回4xx状态码:API Gateway本身的资源路径、请求方法、鉴权配置错误,和底层网络无关
- 返回
内容的提问来源于stack exchange,提问作者Avinash
相关产品推荐
相关产品推荐

