開始為您的叢集使用 AWS Fargate - Amazon EKS

協助改進此頁面

若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。

開始為您的叢集使用 AWS Fargate

本主題會說明如何使用 Amazon EKS 叢集,以在 AWS Fargate 上開始執行 Pod。

如果使用 CIDR 區塊限制對叢集公有端點的存取,則建議您也啟用私有端點存取。這樣一來,Fargate Pod 即可與叢集通訊。若不啟用私有端點,您指定用於公有存取的 CIDR 區塊必須包含來自 VPC 的傳出來源。如需詳細資訊,請參閱 叢集 API 伺服器端點

先決條件

現有的叢集。如果還沒有 Amazon EKS 叢集,請參閱 開始使用 Amazon EKS

步驟 1:確認現有節點可以與 Fargate Pod 進行通訊

如果正在使用無節點的新叢集,或叢集只有受管節點群組 (請參閱 透過受管節點群組來簡化節點生命週期),您可以跳至 步驟 2:建立 Fargate Pod 執行角色

假設您正在使用的現有叢集已經具有與其相關聯的節點。請確保在這些節點上的 Pod 可以自由地與在 Fargate 上執行的 Pod 進行通訊。在 Fargate 上執行的 Pod 會自動設定為使用其相關聯之叢集的叢集安全群組。請務必確認叢集中的任何現有節點可以傳送與接收叢集安全群組的流量。受管節點群組也會自動設定為使用叢集安全群組,因此您不需要為此相容性修改或檢查它們 (請參閱 透過受管節點群組來簡化節點生命週期)。

對於使用 eksctl 或 Amazon EKS 受管 AWS CloudFormation 範本所建立的現有節點群組,您可以手動將叢集安全群組新增至節點。您還可以修改節點群組的 Auto Scaling 群組啟動範本,從而將叢集安全群組連接至執行個體。如需詳細資訊,請參閱《Amazon VPC 使用者指南》中的變更執行個體的安全群組

您可以在 AWS 管理主控台 於叢集的 Networking (聯網) 區段下方檢查叢集的安全群組。您也可使用下列 AWS CLI 命令來執行此作業。使用此命令時,請以您叢集的名稱取代 <my-cluster>

aws eks describe-cluster --name <my-cluster> --query cluster.resourcesVpcConfig.clusterSecurityGroupId

步驟 2:建立 Fargate Pod 執行角色

當您的叢集在 AWS Fargate 上建立 Pod 時,在 Fargate 基礎結構上執行的元件須代表您呼叫 AWS API。Amazon EKS Pod 執行角色提供進行此類工作的 IAM 許可。若要建立 AWS Fargate Pod 執行角色,請參閱 Amazon EKS Pod 執行 IAM 角色

注意

如果您使用 --fargate 選項以 eksctl 建立叢集,則您的叢集已擁有 Pod 執行角色,您可以在 IAM 主控台中使用模式 eksctl-my-cluster-FargatePodExecutionRole-ABCDEFGHIJKL 找到該角色。同樣地,如果您使用 eksctl 建立 Fargate 設定檔,eksctl 將建立 Pod 執行角色 (如果該角色尚未建立)。

步驟 3:為您的叢集建立 Fargate 設定檔

您必須定義 Fargate 設定檔,指定哪些 Pod 在啟動時使用 Fargate,然後才能排程在叢集 Fargate 上執行的 Pod。如需詳細資訊,請參閱 定義哪些 Pod 在啟動時會使用 AWS Fargate

注意

若您使用 --fargate 選項以 eksctl 建立叢集,則您叢集的 Fargate 設定檔已建立完成,並包含在 kube-systemdefault 命名空間中所有 Pod 的選取器。使用下列程序來為您想要搭配 Fargate 使用的任何其他命名空間建立 Fargate 描述檔。

您可以使用下列任一工具建立 Fargate 設定檔:

eksctl

此程序需要 eksctl 版本 0.214.0 或更新版本。您可使用以下命令檢查您的版本:

eksctl version

如需有關安裝或更新 eksctl 的指示,請參閱 eksctl 文件中的 Installation 一節。

若要使用 eksctl 建立 Fargate 設定檔

使用以下 eksctl 命令建立您的 Fargate 設定檔,並以您自己的值取代每一個 <example value>。您必須指定一個命名空間。不過,--labels 選項並非必要項目。

eksctl create fargateprofile \ --cluster <my-cluster> \ --name <my-fargate-profile> \ --namespace <my-kubernetes-namespace> \ --labels <key=value>

對於 <my-kubernetes-namespace><key=value> 標籤可以使用某些萬用字元。如需詳細資訊,請參閱 Fargate 設定檔萬用字元

AWS 管理主控台

若要使用 AWS 管理主控台 建立 Fargate 設定檔

  1. 開啟 Amazon EKS 主控台

  2. 選擇要為其建立 Fargate 設定檔的叢集。

  3. 選擇 Compute (運算) 索引標籤。

  4. Fargate profiles (Fargate 設定檔) 下,選擇 Add Fargate profile (新增 Fargate 設定檔)。

  5. Configure Fargate profile (設定 Fargate 設定檔) 頁面上,執行以下操作:

    1. 對於 Name (名稱),輸入您 Fargate 描述檔的名稱。名稱必須是唯一的。

    2. 對於 Pod 執行角色,請選擇要搭配您的 Fargate 設定檔使用的 Pod 執行角色。只會顯示具有 eks-fargate-pods.amazonaws.com 服務委託人的 IAM 角色。如果未列出任何角色,您必須建立一個。如需詳細資訊,請參閱 Amazon EKS Pod 執行 IAM 角色

    3. 視需要修改選取的子網路

      注意

      只有私有子網路支援在 Fargate 上執行的 Pod。

    4. 對於 Tags (標籤),您可以選擇標記 Fargate 設定檔。這些標籤不會傳播至與設定檔相關聯的其他資源,例如 Pod。

    5. 選擇下一步

  6. 設定 Pod 選擇頁面上,執行以下作業:

    1. 針對命名空間,輸入與 Pod 相符的命名空間。

      • 您可以使用特定的命名空間進行比對,例如 kube-systemdefault

      • 您可以使用某些萬用字元 (例如 prod-*) 來比對多個命名空間 (例如 prod-deploymentprod-test)。如需詳細資訊,請參閱 Fargate 設定檔萬用字元

    2. (選用) 將 Kubernetes 標籤新增至選取器。將其特別新增至需與特定命名空間中的 Pod 相符的選取器。

      • 您可以將標籤 infrastructure: fargate 新增至選取器,因此只有在也有 infrastructure: fargate Kubernetes 標籤之指定命名空間中的 Pod 與選取器相符。

      • 您可以使用某些萬用字元 (例如 key?: value?) 來比對多個命名空間 (例如 keya: valueakeyb: valueb)。如需詳細資訊,請參閱 Fargate 設定檔萬用字元

    3. 選擇下一步

  7. Review and create (檢閱和建立) 頁面,檢閱您 Fargate 設定檔的資訊並選擇 Create (建立)。

步驟 4:更新 CoreDNS

CoreDNS 預設為在 Amazon EKS 叢集上的 Amazon EC2 基礎設施上執行。若您希望在叢集的 Fargate 上執行 Pod,請完成以下步驟。

注意

如果透過 --fargate 選項使用 eksctl 建立叢集,您可以直接跳至 後續步驟

  1. 使用下列命令來刪除 CoreDNS 的 Fargate 設定檔。使用您的叢集名稱取代 <my-cluster>、使用您的帳戶 ID 取代 <111122223333>、使用您的 Pod 執行角色名稱取代 <AmazonEKSFargatePodExecutionRole>,並使用私有子網路的 ID 取代 <000000000000000a><000000000000000b><000000000000000c>。若沒有 Pod 執行角色,則必須先建立一個 (請參閱 步驟 2:建立 Fargate Pod 執行角色)。

    重要

    角色 ARN 不能包含 / 之外的路徑。例如,如果您的角色名稱是 development/apps/AmazonEKSFargatePodExecutionRole,則您必須在指定角色的 ARN 時將其變更為 AmazonEKSFargatePodExecutionRole。角色 ARN 的格式必須是 arn:aws:iam::<111122223333>:role/<AmazonEKSFargatePodExecutionRole>

    aws eks create-fargate-profile \ --fargate-profile-name coredns \ --cluster-name <my-cluster> \ --pod-execution-role-arn arn:aws:iam::<111122223333>:role/<AmazonEKSFargatePodExecutionRole> \ --selectors namespace=kube-system,labels={k8s-app=kube-dns} \ --subnets subnet-<000000000000000a> subnet-<000000000000000b> subnet-<000000000000000c>
  2. 觸發 coredns 部署的推展。

    kubectl rollout restart -n kube-system deployment coredns

後續步驟