AWS EKS 补充信息

术语

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

重要说明

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

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

Service Annotation 配置说明

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

    kubectl get pod -n kube-system |grep aws-load
  2. 创建负载均衡器;有关详细的创建步骤和参数,请参阅 AWS EKS Service Annotation 说明 中的负载均衡器创建部分。

    • 如果上述命令未返回相关 Pod,则表示集群未安装 AWS Load Balancer Controller。无需配置 Service Annotations,直接创建负载均衡器即可。

    • 如果上述命令返回相关 Pod,则表示集群已安装 AWS Load Balancer Controller。在对应集群中创建负载均衡器时,添加以下 Service Annotations。有关 Annotation 的详细信息,请参阅 AWS EKS Service Annotation 说明:

      • 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 将被公有云识别并分配地址。平台负载均衡器将读取此地址,并将其设置为自身的访问地址。