AWS EKS中LoadBalancer类型Service入站流量转发路径咨询
EKS LoadBalancer 类型 Service 流量路径说明
你列出的两种流量路径均不符合实际流转逻辑,实际链路根据Service的目标类型配置分为两种场景:
默认场景(实例目标模式,无额外注解配置)
你贴出的配置没有添加特殊注解,会走该默认模式:AWS 自动为Service供应外部负载均衡器(默认为CLB,可通过注解指定为NLB),将集群所有工作节点注册为LB的后端目标,后端对应端口为K8s自动分配的NodePort(默认在30000-32767端口段随机分配,也可在配置中手动指定固定值)。
完整流量流转链路:
AWS 外部负载均衡器 --> 工作节点网卡上的NodePort --> 节点上kube-proxy维护的iptables/ipvs转发规则 --> 匹配Service(ClusterIP:8080)的负载均衡策略 --> 转发到匹配`app: my-app`标签的Pod的8282端口
- 第一种路径的偏差:NodePort不会直接将流量转发到Service端口,Service的ClusterIP是kube-proxy维护的虚拟IP,没有实体进程监听,流量到达NodePort后直接由内核层面的转发规则做DNAT和负载均衡。
- 第二种路径完全不成立:默认模式下外部LB无法直接访问集群内的虚拟Service IP,必须经过节点层面的端口承接流量。
IP目标模式(添加指定注解场景)
如果给Service添加注解service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip,AWS将供应NLB并直接把VPC内的Pod IP注册为后端目标,流量不经过NodePort和kube-proxy转发,链路为:
AWS 外部网络负载均衡器(NLB) --> VPC底层路由直接转发到Pod弹性网卡的8282端口
该模式下转发延迟更低,不存在额外的节点转发开销,但仅支持NLB,不支持CLB。
内容的提问来源于stack exchange,提问作者user842225
相关产品推荐
相关产品推荐

