協助改進此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
搭配 Helm 的 Install AWS Load Balancer 控制器
提示
使用 Amazon EKS 自動模式,您無需安裝或升級聯網附加元件。自動模式包括 Pod 聯網和負載平衡功能。
如需詳細資訊,請參閱利用 EKS 自動模式自動運作叢集基礎設施。
本主題說明如何使用 Helm、Kubernetes 套件管理員 和 安裝 AWS Load Balancer控制器eksctl。已使用預設選項安裝控制器。如需有關控制器的詳細資訊,包括使用註釋設定控制器的詳細資訊,請參閱 GitHub 上的AWS Load Balancer 控制器文件
在下列步驟中,使用您自己的值取代範例值。
先決條件
開始本教學之前,您必須完成下列步驟:
-
建立 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:安裝 Load Balancer 控制器。 -
如果您使用服務帳戶的 IAM 角色 (IRSA),則必須為每個叢集設定 IRSA,而且角色信任政策中的 OpenID Connect (OIDC) 提供商 ARN 專屬於每個 EKS 叢集。此外,如果您要在具有現有
AmazonEKSLoadBalancerControllerRole的新叢集上安裝控制器,請更新角色的信任政策,以包含新叢集的 OIDC 提供商,並使用適當的角色註釋來建立新的服務帳戶。若要判定您是否已經擁有 OIDC 提供商,或是要建立一個,則請參閱 為您的叢集建立 IAM OIDC 身分提供者。
步驟 1:使用 eksctl 建立 IAM 角色
下列步驟參考 AWS Load Balancer控制器 v2.14.1 發行版本。如需有關所有發行版本的詳細資訊,請參閱 GitHub 上的 AWS Load Balancer 控制器發行頁面
-
下載 AWS Load Balancer控制器的 IAM 政策,允許其代表您呼叫 AWS APIs。
curl -O https://raw.githubusercontent.com/kubernetes-sigs/aws-load-balancer-controller/v2.14.1/docs/install/iam_policy.json-
如果您是非標準 AWS 分割區,例如政府或中國區域,請檢閱 GitHub 上的政策
,並下載適用於您區域的適當政策。
-
-
使用上一個步驟中下載的政策,建立 IAM 政策。
aws iam create-policy \ --policy-name AWSLoadBalancerControllerIAMPolicy \ --policy-document file://iam_policy.json注意
如果您在 中檢視政策 AWS 管理主控台,主控台會顯示 ELB 服務的警告,但不會顯示 ELB v2 服務的警告。發生這種情況是由於政策中存在適用於 ELB v2 的某些動作,但不適用於 ELB。您可以忽略這些對 ELB 發出的警告。
-
取代叢集名稱、區域代碼和帳戶 ID 的值。
eksctl create iamserviceaccount \ --cluster=<cluster-name> \ --namespace=kube-system \ --name=aws-load-balancer-controller \ --attach-policy-arn=arn:aws: iam::<AWS_ACCOUNT_ID>:policy/AWSLoadBalancerControllerIAMPolicy \ --override-existing-serviceaccounts \ --region <aws-region-code> \ --approve
步驟 2:Install AWS Load Balancer 控制器
-
新增
eks-chartsHelm Chart 儲存庫。 會在 GitHub 上 AWS 維護此儲存庫。 helm repo add eks https://aws.github.io/eks-charts -
更新您的本機儲存庫,以確定您擁有最新的圖表。
helm repo update eks -
安裝 AWS Load Balancer控制器。
如果您要將控制器部署到限制存取 Amazon EC2 執行個體中繼資料服務 (IMDS)
的 Amazon EC2 節點,或者如果您正在部署到 Fargate 或 Amazon EKS 混合節點,則請將以下旗標新增到以下 helm命令中:-
--set region=region-code -
--set vpcId=vpc-xxxxxxxx使用您叢集的名稱取代
my-cluster。在下列命令中,aws-load-balancer-controller是您在上一個步驟中建立的 Kubernetes 服務帳戶。如需設定 Helm Chart 的詳細資訊,請參閱 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 \ --version 1.14.0
-
重要
部署的圖表不會自動接收安全更新。當圖表可用時,您需要手動升級到較新的圖表。升級時,請將先前命令中的安裝變更為 upgrade。
helm install 命令會自動安裝控制器的自訂資源定義 (CRD)。helm upgrade 命令則不會。如果您使用 helm upgrade,,則必須手動安裝 CRD。執行下列命令以安裝 CRD:
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 清單檔案進行部署,則您只有一個複本。
-
使用控制器佈建 AWS 資源之前,您的叢集必須符合特定需求。如需詳細資訊,請參閱透過 Application Load Balancer 路由應用程式與 HTTP 流量及透過 Network Load Balancer 路由 TCP 與 UDP 流量。