| 缩写 | 全称 | 说明 |
|---|---|---|
| eks-clb | Classic Load Balancer | AWS 默认负载均衡器。在某些情况下存在问题,不推荐使用。 |
| eks-nlb | Network Load Balancer | AWS 第4层负载均衡器,在 TCP/UDP 层进行负载均衡,适用于需要更高层网络控制的场景。 |
| eks-alb | Application Load Balancer | AWS 第7层负载均衡器。相比 eks-nlb,eks-alb 能解析 HTTP/HTTPS 协议并更智能地分发请求,适合 Web 应用。 |
| aws-lb | AWS Load Balancer | 安装在 Kubernetes 上的负载均衡器,能基于 Kubernetes 中的 LoadBalancer 类型 Service 和 Ingress 自动创建 eks-nlb 和 eks-alb,以满足应用负载均衡需求。 |
| Platform Load Balancer | - | 平台自研的第7层负载均衡器。 |
| Service Annotations | - | 以键值对形式附加在对象上的元数据。这些附加信息可以被识别和利用,用于增强和简化 Kubernetes 资源的各方面管理。Annotations 可以是无具体功能的说明性文本,也可以指定云厂商配置或行为,或指定配置参数和工具,功能非常强大。 |
创建负载均衡器时,建议手动配置 Service Annotations,以确保平台负载均衡器正确使用 aws-lb。如果未正确配置相应的 Service Annotations,平台将默认使用 eks-clb,而 eks-clb 存在 UDP 相关问题,可能导致异常情况。
在对应集群中,使用 kubectl 执行以下命令,查找 kube-system 命名空间中名称包含 "aws-load" 的所有 Pod:
创建负载均衡器;详细创建步骤和参数请参见 AWS EKS Service Annotation Instructions 中的负载均衡器创建部分。
如果上述命令未返回相关 Pod,说明集群未安装 AWS Load Balancer Controller,无需配置 Service Annotations,直接创建负载均衡器即可。
如果上述命令返回相关 Pod,说明集群已安装 AWS Load Balancer Controller。在对应集群创建负载均衡器时,需添加以下 Service Annotations。注释详情请参见 AWS EKS Service Annotation Instructions:
service.beta.kubernetes.io/aws-load-balancer-type: external //Required
service.beta.kubernetes.io/aws-load-balancer-nlb-target-type: ip //Required
service.beta.kubernetes.io/aws-load-balancer-scheme: internet-facing // 可选。需要公网支持时添加此注释。
创建容器网络类型负载均衡器时,填写的 Service Annotations 会被设置到对应平台负载均衡器的 LoadBalancer 类型 Service 上。
在公有云环境中,带有相应 Service Annotations 的 LoadBalancer Service 会被公有云识别并分配地址,平台负载均衡器会读取该地址并设置为自身访问地址。