AWS EKS 补充信息

术语

缩写全称说明
eks-clb经典负载均衡器AWS 默认负载均衡器。在某些情况下存在问题,不推荐使用。
eks-nlb网络负载均衡器AWS 第 4 层负载均衡器,在 TCP/UDP 层进行负载均衡,适用于需要更高层网络控制的场景。
eks-alb应用负载均衡器AWS 第 7 层负载均衡器。与 eks-nlb 相比,eks-alb 可以解析 HTTP/HTTPS 协议,并更智能地分发请求,适用于 Web 应用。
aws-lbAWS Load Balancer安装在 Kubernetes 上的负载均衡器,可根据 Kubernetes 中的 LoadBalancer Services 和 Ingress 自动创建 eks-nlb 和 eks-alb,以满足应用负载均衡需求。
Platform Load Balancer-平台自有的第 7 层负载均衡器。
Service Annotations-以键值对形式附加到对象上的元数据。这些附加信息可以被识别和利用,从而增强并简化对 Kubernetes 资源各方面的管理。Annotations 可以是没有特定功能的说明性文本,也可以指定云提供商的配置或行为,或者指定配置参数和工具。功能非常强大。

重要说明

在创建负载均衡器时,建议手动配置 service annotations,以确保平台负载均衡器正确使用 aws-lb。如果未正确配置相应的 service annotations,平台将默认使用 eks-clb,而它存在与 UDP 相关的问题,可能会导致意外情况。

EKS 使用 aws-lb 为容器网络负载均衡器提供外部访问

服务注解配置说明

  1. 在对应的集群中,使用 kubectl 执行以下命令,查找 kube-system 命名空间中名称包含 "aws-load" 的所有 Pod:

    kubectl get pod -n kube-system |grep aws-load
  2. 创建负载均衡器;有关详细创建步骤和参数,请参见 AWS EKS 服务注解说明 中的负载均衡器创建章节。

    • 如果上述命令没有返回相关 Pod,说明该集群未安装 AWS Load Balancer Controller,无需配置 service annotations,直接创建负载均衡器即可。

    • 如果上述命令返回了相关 Pod,说明该集群已安装 AWS Load Balancer Controller。在对应集群中创建负载均衡器时,请添加以下 service annotations。注解详情请参见 AWS EKS 服务注解说明

      • 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 // Optional. Add this annotation if public network support is needed.

访问地址获取方式

  • 创建容器网络类型负载均衡器时,填写的 service annotations 会设置到平台负载均衡器对应的 LoadBalancer Service 上。

  • 在公有云中,带有合适 service annotations 的 LoadBalancer Service 会被公有云识别并分配地址。平台负载均衡器会读取该地址,并将其设置为自身的访问地址。