安装 AWS Load Balancer Controller 附加组件
AWS Load Balancer Controller 管理适用于 Kubernetes 集群的 AWS 弹性负载均衡器。此控制器预置以下资源:
-
当您创建 Kubernetes
Ingress
时的 AWS 应用程序负载均衡器 (ALB, Application Load Balancer)。 -
当您创建
LoadBalancer
类型的 Kubernetes 服务时的 AWS 网络负载均衡器(NLB)。在过去,实例目标使用 Kubernetes 网络负载均衡器,而 IP 目标使用 AWS 负载均衡器控制器。使用 AWS Load Balancer Controller 版本2.3.0
或更高版本,您可以使用任一目标类型创建 NLB。有关 NLB 目标类型的更多信息,请参阅 Network Load Balancer 用户指南中的目标类型。
AWS Load Balancer Controller 以前名为 AWS ALB 传入控制器。它是托管在 GitHub 上的一个开源项目
先决条件
-
现有 版 Amazon EKS 集群。要部署一个角色,请参阅 开始使用 Amazon EKS。
-
集群的现有 AWS Identity and Access Management IAM OpenID Connect (OIDC) 提供商。要确定您是否已经拥有一个或是否要创建一个,请参阅 为集群创建 IAM OIDC 提供商。
-
如果您的集群为
1.21
版本或更高版本,确保您的 Amazon VPC CNI plugin for Kubernetes、kube-proxy
和 CoreDNS 附加组件为服务账户令牌中列出的最低版本。 -
熟悉 AWS Elastic Load Balancing。有关更多信息,请参阅 Elastic Load Balancing 用户指南。
要将 AWS Load Balancer Controller 部署到 Amazon EKS 集群
在以下步骤中,将
替换为您自己的值:。example
values
-
创建一个 IAM policy。
-
下载 AWS Load Balancer Controller 的 IAM policy,该策略允许负载均衡器代表您调用 AWS API。
-
AWS GovCloud(美国东部)或 AWS GovCloud(美国西部)AWS 区域
curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.4.7/docs/install/iam_policy_us-gov.json
-
所有其他 AWS 区域
curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.4.7/docs/install/iam_policy.json
-
-
使用上一步中下载的策略创建一个 IAM policy。如果您已下载
iam_policy_us-gov.json
,将iam_policy.json
更改为iam_policy_us-gov.json
,然后再运行命令。aws iam create-policy \ --policy-name
AWSLoadBalancerControllerIAMPolicy
\ --policy-document file://iam_policy.json注意 如果您在AWS Management Console中查看策略,则控制台会显示有关 ELB 服务的警告,但不会显示有关 ELB v2 服务的警告。之所以发生这种情况,是因为策略中的某些操作适用于 ELB v2,但不适用于 ELB。您可以忽略有关 ELB 的警告。
-
-
创建一个 IAM 角色。在 AWS Load Balancer Controller 的
kube-system
命名空间中创建名为aws-load-balancer-controller
的 Kubernetes 服务账户,并使用 IAM 角色的名称注释 Kubernetes 服务账户。您可以使用
eksctl
或 AWS CLI 和kubectl
创建 IAM 角色和 Kubernetes 服务账户。 (可选)配置您的 Kubernetes 服务账户使用的 AWS Security Token Service 端点类型。有关更多信息,请参阅配置服务账户的 AWS Security Token Service 端点。
如果您当前没有安装适用于 Kubernetes 的 AWS ALB 入口控制器,或者当前安装了 Helm 的 AWS Load Balancer Controller 的
0.1.x
版本,则跳至下一步。卸载 AWS ALB 入口控制器或 AWS Load Balancer Controller 的
0.1.x
版本(仅在安装了 Helm 时)。使用原来安装它的工具完成该过程。AWS Load Balancer Controller 取代适用于 Kubernetes 的 AWS ALB 入口控制器的功能。-
使用 Helm V3 或更高版本或通过应用 Kubernetes 清单来安装 AWS Load Balancer Controller。如果要在 Fargate 上部署控制器,请使用 Helm 程序。Helm 程序不依赖于
cert-manager
,因为它可以生成自签名证书。 -
验证控制器是否已安装。
kubectl get deployment -n kube-system aws-load-balancer-controller
输出示例如下。
NAME READY UP-TO-DATE AVAILABLE AGE aws-load-balancer-controller 2/2 2 2 84s
如果使用 Helm 进行部署,则会收到之前的输出结果。如果您使用 Kubernetes 清单进行部署,则只有一个副本。
-
在使用控制器预置AWS资源前,您的集群必须满足特定要求。有关更多信息,请参阅 Amazon EKS 上的应用程序负载均衡 和 Amazon EKS 上的网络负载均衡。