使用 Helm 安装 Amazon Load Balancer Controller - Amazon EKS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

帮助改进此页面

想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。

使用 Helm 安装 Amazon Load Balancer Controller

本主题介绍如何使用 Helm(Kubernetes 的程序包管理器)和 eksctl 安装 Amazon Load Balancer Controller。控制器安装了默认的选项。有关控制器的更多信息,包括使用注释对其进行配置的详细信息,请参阅 GitHub 上的 Amazon Load Balancer Controller 文档

在以下步骤中,将 example values 替换为您自己的值:。

先决条件

在开始使用本教程之前,您必须安装并配置创建和管理 Amazon EKS 集群所需的以下工具和资源。

  • Helm 已在本地安装。

步骤 1:使用 eksctl 创建 IAM 角色

注意

您只需为 Amazon Load Balancer Controller 创建一个 IAM 角色,每个 Amazon 账户一个。检查 IAM 控制台中是否存在 AmazonEKSLoadBalancerControllerRole。如果此角色存在,则请跳至 步骤 2:安装 Amazon Load Balancer Controller

创建一个 IAM 策略。
  1. 下载 Amazon Load Balancer Controller 的 IAM 策略,该策略允许负载均衡器代表您调用 Amazon API。

    China Regions
    $ curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.7.2/docs/install/iam_policy_cn.json
    $ mv iam_policy_cn.json iam_policy.json
  2. 使用上一步中下载的策略创建一个 IAM 策略。

    $ aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam_policy.json
    注意

    如果您在Amazon Web Services Management Console中查看策略,则控制台会显示有关 ELB 服务的警告,但不会显示有关 ELB v2 服务的警告。之所以发生这种情况,是因为策略中的某些操作适用于 ELB v2,但不适用于 ELB。您可以忽略有关 ELB 的警告。

使用 eksctl 创建 IAM 角色
  • 请将 my-cluster 替换为您的集群的名称,将 111122223333 替换为您的账户 ID,然后运行命令。

    $ eksctl create iamserviceaccount \ --cluster=my-cluster \ --namespace=kube-system \ --name=aws-load-balancer-controller \ --role-name AmazonEKSLoadBalancerControllerRole \ --attach-policy-arn=arn:aws:iam::111122223333:policy/AWSLoadBalancerControllerIAMPolicy \ --approve

步骤 2:安装 Amazon Load Balancer Controller

使用 Helm V3 安装 Amazon Load Balancer Controller
  1. 添加 eks-charts Helm 图表存储库。Amazon 在 GitHub 上维护此存储库

    $ helm repo add eks https://aws.github.io/eks-charts
  2. 更新您的本地存储库,以确保您拥有最新的图表。

    $ helm repo update eks
  3. 安装 Amazon Load Balancer Controller。

    my-cluster 替换为您的集群名称。在以下命令中,aws-load-balancer-controller 是您在上一步中创建的 Kubernetes 服务账户。

    有关配置 Helm 图表的更多信息,请参阅 GitHub 上的 values.yaml

    $ helm install aws-load-balancer-controller eks/aws-load-balancer-controller \ -n kube-system \ --set clusterName=my-cluster \ --set serviceAccount.create=false \ --set serviceAccount.name=aws-load-balancer-controller \ --set enableShield=false \ --set enableWaf=false \ --set enableWafv2=false
    1. 如果要将控制器部署到被限制访问 Amazon EC2 实例元数据服务 (IMDS) 的 Amazon EC2 节点,或者部署到 Fargate 节点,则需要在以下 helm 命令中添加以下标志:

      • --set region=region-code

      • --set vpcId=vpc-xxxxxxxx

    2. 要查看 Helm 图表和负载均衡器控制器的可用版本,请使用以下命令:

      helm search repo eks/aws-load-balancer-controller --versions
    重要

    已部署的图表不会自动接收安全更新。当新图表可用时,您需要手动升级到新图表。升级时,在上一个命令中将 install 更改为 upgrade

    helm install 命令会自动安装控制器的自定义资源定义(CRDs)。helm upgrade 命令不会。如果您使用 helm upgrade,,则必须手动安装 CRDs。运行以下命令来安装 CRDs:

    wget https://raw.githubusercontent.com/aws/eks-charts/master/stable/aws-load-balancer-controller/crds/crds.yaml kubectl apply -f crds.yaml

步骤 3:验证控制器是否已安装

  1. 验证控制器是否已安装。

    $ 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 清单进行部署,则只有一个副本。

  2. 在使用控制器预置Amazon资源前,您的集群必须满足特定要求。有关更多信息,请参阅Amazon EKS 上的应用程序负载均衡Amazon EKS 上的网络负载均衡