協助改進此頁面
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
使用資訊清單安裝 AWS Load Balancer 控制器
提示
使用 Amazon EKS 自動模式,您無需安裝或升級聯網附加元件。自動模式包括 Pod 聯網和負載平衡功能。
如需詳細資訊,請參閱 利用 EKS 自動模式自動運作叢集基礎設施。
本主題會說明如何透過下載和套用 Kubernetes 資訊清單來安裝控制器。您可以檢視 GitHub 上的完整控制器文件
在下列步驟中,使用您自己的值取代範例值。
先決條件
開始本教學之前,您必須完成下列步驟:
-
建立 Amazon EKS 叢集。若要建立服務角色,請參閱開始使用 Amazon EKS。
-
在您的本機電腦上安裝 Helm
。 -
請確保您的 Kubernetes 專用 Amazon VPC CNI 外掛程式、
kube-proxy及 CoreDNS 附加元件為服務帳戶字符中列出的最低版本。 -
了解 AWS Elastic Load Balancing 概念。如需詳細資訊,請參閱《Elastic Load Balancing 使用者指南》。
考量事項
在繼續此頁面上的組態步驟之前,請考量下列情況:
-
IAM 政策和角色 (
AmazonEKSLoadBalancerControllerRole) 可以在相同 AWS 帳戶中的多個 EKS 叢集之間重複使用。 -
如果您要在最初建立角色 (
AmazonEKSLoadBalancerControllerRole) 的相同叢集上安裝控制器,請在驗證角色存在後,前往步驟 2:安裝 cert-manager。 -
如果您使用服務帳戶的 IAM 角色 (IRSA),則必須為每個叢集設定 IRSA,而且角色信任政策中的 OpenID Connect (OIDC) 提供商 ARN 專屬於每個 EKS 叢集。此外,如果您要在具有現有
AmazonEKSLoadBalancerControllerRole的新叢集上安裝控制器,請更新角色的信任政策,以包含新叢集的 OIDC 提供商,並使用適當的角色註釋來建立新的服務帳戶。若要判定您是否已經擁有 OIDC 提供商,或是要建立一個,則請參閱 為您的叢集建立 IAM OIDC 身分提供者。
步驟 1:設定 IAM
下列步驟會參考 AWS Load Balancer 控制器 v2.13.3 發行版本。如需有關所有發行版本的詳細資訊,請參閱 GitHub 上的 AWS Load Balancer 控制器發行頁面
-
下載適用於 AWS Load Balancer 控制器的 IAM 政策,允許它代表您呼叫 AWS API。
-
使用上一個步驟中下載的政策,建立 IAM 政策。
aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam_policy.json注意
如果您在 AWS 管理主控台 中檢視政策,則主控台會顯示 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:安裝 AWS Load Balancer 控制器
-
下載控制器規格。如需控制器的詳細資訊,請參閱 GitHub 上的文件
。 curl -Lo v2_13_3_full.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.13.3/v2_13_3_full.yaml -
對檔案進行以下編輯。
-
如果您已下載
v2_13_3_full.yaml檔案,請執行下列命令以移除清單檔案中的ServiceAccount區段。如果您未移除此區段,則會覆寫您在前一個步驟中對服務帳戶所做的必要註解。如果您刪除控制器,移除此區段還可保留您在上一個步驟中建立的服務帳戶。sed -i.bak -e '730,738d' ./v2_13_3_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 --- -
使用叢集名稱取代
my-cluster,從而使用叢集名稱取代檔案的Deploymentspec區段中的your-cluster-name。sed -i.bak -e 's|your-cluster-name|my-cluster|' ./v2_13_3_full.yaml -
如果您的節點無法存取 Amazon EKS Amazon ECR 映像儲存庫,則需要提取下列映像並將其推送到節點可存取的儲存庫。有關如何提取、標記映像並將其推送到您儲存庫的詳細資訊,請參閱 將容器映像從一個儲存庫複製到另一個儲存庫。
public.ecr.aws/eks/aws-load-balancer-controller:v2.13.3將您的登錄檔名稱新增至資訊清單。下列命令假定私有儲存庫的名稱與來源儲存庫的名稱相同,並將您的私有登錄檔名稱新增至檔案中。使用您的登錄檔取代
111122223333.dkr.ecr.region-code.amazonaws.com。此行假定您將私有儲存庫命名為與來源儲存庫相同的名稱。如果沒有,請將私有登錄檔名稱後的eks/aws-load-balancer-controller文字變更為儲存庫名稱。sed -i.bak -e 's|public.ecr.aws/eks/aws-load-balancer-controller|111122223333.dkr.ecr.region-code.amazonaws.com/eks/aws-load-balancer-controller|' ./v2_13_3_full.yaml -
(僅 Fargate 或受限制的 IMDS 需要)
如果您要將控制器部署到限制存取 Amazon EC2 執行個體中繼資料服務 (IMDS)
的 Amazon EC2 節點,或者如果您正在部署到 Fargate 或 Amazon EKS 混合節點,那麼請在 - args:下新增following parameters。[...] spec: containers: - args: - --cluster-name=your-cluster-name - --ingress-class=alb - --aws-vpc-id=vpc-xxxxxxxx - --aws-region=region-code [...]
-
-
套用檔案。
kubectl apply -f v2_13_3_full.yaml -
將
IngressClass和IngressClassParams清單檔案下載至叢集。curl -Lo v2_13_3_ingclass.yaml https://github.com/kubernetes-sigs/aws-load-balancer-controller/releases/download/v2.13.3/v2_13_3_ingclass.yaml -
將清單檔案套用至叢集。
kubectl apply -f v2_13_3_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 清單檔案進行部署,則您只有一個複本。
-
在使用控制器佈建 AWS 資源之前,您的叢集必須符合特定需求。如需詳細資訊,請參閱透過 Application Load Balancer 路由應用程式與 HTTP 流量及透過 Network Load Balancer 路由 TCP 與 UDP 流量。