帮助改进此页面
想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。
使用 Helm 安装 Amazon Load Balancer Controller。
本主题介绍如何使用 Helm(Kubernetes 的程序包管理器)和 eksctl
安装 Amazon Load Balancer Controller。控制器安装了默认的选项。有关控制器的更多信息,包括使用注释对其进行配置的详细信息,请参阅 GitHub 上的 Amazon Load Balancer Controller 文档
在以下步骤中,将
替换为您自己的值:。example values
先决条件
在开始使用本教程之前,您必须安装并配置创建和管理 Amazon EKS 集群所需的以下工具和资源。
-
现有 Amazon EKS 集群。要部署一个角色,请参阅 开始使用 Amazon EKS。
-
集群的现有 Amazon Identity and Access Management IAM OpenID Connect (OIDC) 提供商。要确定您是否已经拥有一个或是否要创建一个,请参阅 为集群创建 IAM OIDC 提供商。
-
确保您的 Amazon VPC CNI plugin for Kubernetes、
kube-proxy
和 CoreDNS 附加组件为服务账户令牌中列出的最低版本。 -
熟悉 Amazon Elastic Load Balancing。有关更多信息,请参阅 Elastic Load Balancing 用户指南。
-
Helm
已在本地安装。
步骤 1:使用 eksctl
创建 IAM 角色
注意
您只需为 Amazon Load Balancer Controller 创建一个 IAM 角色,每个 Amazon 账户一个。检查 IAM 控制台AmazonEKSLoadBalancerControllerRole
。如果此角色存在,则请跳至 步骤 2:安装 Amazon Load Balancer Controller。
创建一个 IAM 策略。
-
下载 Amazon Load Balancer Controller 的 IAM 策略,该策略允许负载均衡器代表您调用 Amazon API。
-
使用上一步中下载的策略创建一个 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
替换为您的账户 ID,然后运行命令。111122223333
$
eksctl create iamserviceaccount \ --cluster=
my-cluster
\ --namespace=kube-system \ --name=aws-load-balancer-controller \ --role-nameAmazonEKSLoadBalancerControllerRole
\ --attach-policy-arn=arn:aws:iam::111122223333
:policy/AWSLoadBalancerControllerIAMPolicy
\ --approve
步骤 2:安装 Amazon Load Balancer Controller
使用 Helm V3 安装 Amazon Load Balancer Controller
-
添加
eks-charts
Helm 图表存储库。Amazon 在 GitHub 上维护此存储库。 $
helm repo add eks https://aws.github.io/eks-charts
-
更新您的本地存储库,以确保您拥有最新的图表。
$
helm repo update eks
-
安装 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-
如果要将控制器部署到被限制访问 Amazon EC2 实例元数据服务 (IMDS)
的 Amazon EC2 节点,或者部署到 Fargate 节点,则需要在以下 helm
命令中添加以下标志:-
--set region=
region-code
-
--set vpcId=
vpc-xxxxxxxx
-
-
要查看 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:验证控制器是否已安装
-
验证控制器是否已安装。
$
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 清单进行部署,则只有一个副本。
-
在使用控制器预置Amazon资源前,您的集群必须满足特定要求。有关更多信息,请参阅使用 Application Load Balancers 路由应用程序和 HTTP 流量 和使用 Network Load Balancers 路由 TCP 和 UDP 流量。