帮助改进此页面
想为本用户指南做出贡献? 滚动到页面底部,然后选择在 GitHub 上编辑此页面。您的贡献有助于我们的用户指南为每个人提供更充分的参考。
使用清单安装 Amazon Load Balancer Controller
本主题描述如何通过下载和应用 Kubernetes 清单安装控制器。您可以在 GitHub 上查看关于该控制器的完整文档
在以下步骤中,将
替换为您自己的值:。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 用户指南。
步骤 1:配置 IAM
注意
您只需为 Amazon Load Balancer Controller 创建一个角色,每个 Amazon 账户一个。检查 IAM 控制台AmazonEKSLoadBalancerControllerRole
。如果此角色存在,则请跳至 步骤 2:安装 cert-manager。
创建一个 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 的警告。
步骤 2:安装 cert-manager
使用以下方法之一安装 cert-manager
以将证书配置注入 Webhook。有关更多信息,请参阅 cert-manager
文档中的 入门
我们建议使用 quay.io
容器注册表安装 cert-manager
。如果您的节点无权访问 quay.io
容器注册表,则请使用 Amazon ECR 安装 cert-manager
(见下文)。
步骤 3:安装 Amazon Load Balancer Controller
使用 Kubernetes 清单安装 Amazon Load Balancer Controller
-
下载控制器规范。有关控制器的更多信息,请参阅 GitHub 上的文档
。 curl -Lo v2_7_2_full.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.7.2/v2_7_2_full.yaml
-
对文件进行以下编辑。
-
如果您已下载
v2_7_2_full.yaml
文件,请运行以下命令以删除清单中的ServiceAccount
部分。如果您不删除此部分,系统将覆盖您在上一步中对服务账户所做的必需注释。如果删除此部分,若您删除了控制器,系统还会保留您在上一步中创建的服务账户。$
sed -i.bak -e '612,620d' ./v2_7_2_full.yaml
如果您已下载其他文件版本,请在编辑器中打开此文件,然后删除以下行。
apiVersion: v1 kind: ServiceAccount metadata: labels: app.kubernetes.io/component: controller app.kubernetes.io/name: aws-load-balancer-controller name: aws-load-balancer-controller namespace: kube-system ---
-
将文件
Deployment
spec
部分的
替换为您的集群的名称,然后在your-cluster-name
--ingress-class=alb
下添加following parameters
。[...] spec: containers: - args: - --cluster-name=
your-cluster-name
- --ingress-class=alb - --enable-shield=false - --enable-waf=false - --enable-wafv2=false [...] -
(只有 Fargate 或受限的 IMDS 才需要此选项)
如果要将控制器部署到被限制访问 Amazon EC2 实例元数据服务 (IMDS) 的 Amazon EC2 节点
,或者部署到 Fargate,则需要在 following parameters
下添加- args:
:[...] spec: containers: - args: - --cluster-name=
your-cluster-name
- --ingress-class=alb- --enable-shield=false - --enable-waf=false - --enable-wafv2=false - --aws-vpc-id=
[...]vpc-xxxxxxxx
- --aws-region=region-code
-
-
应用文件。
$
kubectl apply -f v2_7_2_full.yaml
-
将
IngressClass
和IngressClassParams
清单下载到您的集群。$
curl -Lo v2_7_2_ingclass.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.7.2/v2_7_2_ingclass.yaml
-
将清单应用于集群。
$
kubectl apply -f v2_7_2_ingclass.yaml
步骤 4:验证控制器是否已安装
-
验证控制器是否已安装。
$
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 流量。