AWS EKS 补充说明
名词解释
| 简称 | 全称 | 说明 |
|---|---|---|
| eks-clb | Classic Load Balancer | AWS 默认提供的负载均衡器,某些情况下存在使用问题,不推荐使用。 |
| eks-nlb | Network Load Balancer | AWS 提供的四层负载均衡器,可以在 TCP/UDP 层面上进行负载均衡,适用于需要更高级别的网络控制的情况。 |
| eks-alb | Application Load Balancer | AWS 提供的七层负载均衡器,相较于 eks-nlb,eks-alb 能够解析 HTTP/HTTPS 协议,可以更智能地分发请求,适用于 Web 应用程序等场景。 |
| aws-lb | AWS Load Balancer | 安装在 Kubernetes 上的负载均衡器,可以根据 Kubernetes 中的 LoadBalancer 类型内部路由(Service)和入站规则(Ingress)自动创建 eks-nlb 和 eks-alb,以满足应用程序的负载均衡需求。 |
| 平台负载均衡器 | - | 平台自研的七层负载均衡器。 |
| 内部路由注解(annotation) | - | 以键值对形式附加到对象的元数据,这些额外的信息可以被识别和利用,以增强和简化 Kubernetes 资源的各个方面的管理,注解可以是没有具体功能的解释性文字、可以指定使用云提供商的配置或行为、也可以指定配置参数、工具等,功能十分强大。 |
注意事项
在创建负载均衡器时,建议手动配置内部路由注解,以确保平台负载均衡器正确解析使用 aws-lb。若未正确配置相应的内部路由注解,平台将默认使用 eks-clb,而 eks-clb 存在与 UDP 相关的问题,可能会导致意外情况的发生。
EKS 使用 aws-lb 为容器网络类型的负载均衡器提供外网访问能力
配置内部路由注解说明
-
在对应集群通过 Kubectl 工具执行如下命令,查找位于 kube-system 命名空间中,名称包含 aws-load 的所有 Pod。
kubectl get pod -n kube-system |grep aws-load -
创建负载均衡器,具体创建步骤及参数请参考 创建负载均衡器 。
-
若通过如上命令没有查询到相关 Pod ,说明集群未安装 AWS Loadbalancer Controller,则无需填写内部路由注解,直接创建负载均衡器即可。
-
若通过如上命令查询到相关 Pod,说明集群安装了 AWS Loadbalancer Controller,则需在对应集群创建负载均衡器时,添加如下内部路由注解,具体注解说明请参考 AWS EKS 中内部路由注解说明 。
-
service.beta.kubernetes.io/aws-load-balancer-type: external //必填 -
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip //必填 -
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing // 选填。若需支持公网时,添加此内部路由注解。
-
-
获取访问地址方式说明
-
创建容器网络类型的负载均衡器时,填写的内部路由注解会被设置到平台负载均衡器对应的 LoadBalancer 类型内部路由上。
-
在公有云上,带有相应内部路由注解的 LoadBalancer 类型内部路由,会被公有云识别并为这个 LoadBalancer 类型内部路由分配地址,平台负载均衡器会读取此地址,并设置为自己的访问地址。