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

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

為您的叢集開始使用 AWS Fargate

重要

AWS Fargate 搭配 Amazon EKS 在 AWS GovCloud (美國東部) 和 AWS GovCloud (美國西部) 中無法使用。

本主題說明如何開始執行 Pods 在 AWS Fargate 上與您的 Amazon EKS 叢集搭配使用。

如果您使用 CIDR 區塊限制對叢集公有端點的存取,建議您也啟用私有端點存取。如此一來,Fargate Pods 可以與叢集通訊。在啟用私有端點的情況下,您為公有存取指定的 CIDR 區塊必須包含來自 VPC 的傳出來源。如需詳細資訊,請參閱控制叢集 API 伺服器端點的網路存取

先決條件

現有的叢集。如果您還沒有 Amazon EKS 叢集,請參閱 Amazon EKS 入門

步驟 1:確保現有節點可以與 Fargate 通訊 Pods

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

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

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

您可以在叢集的網路區段 AWS Management Console 下,檢查叢集的安全群組。或者,您可以使用下列 AWS CLI 命令來執行此操作。使用此命令時,請取代 my-cluster 您的叢集名稱。

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

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

當您的叢集建立 Pods 在 AWS Fargate 上,在 Fargate 基礎設施上執行的元件必須代表您呼叫 AWS APIs。Amazon EKS Pod 執行角色會提供 IAM 許可來執行此操作。若要建立 AWS Fargate Pod 執行角色,請參閱 Amazon EKS Pod 執行 IAM 角色

注意

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

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

在您可以排程之前 Pods 在叢集中的 Fargate 上執行的 ,您必須定義 Fargate 設定檔,指定 Pods 啟動 Fargate 時,請使用 Fargate。如需詳細資訊,請參閱定義 Pods 啟動時使用 AWS Fargate

注意

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

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

eksctl

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

eksctl version

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

若要使用 建立 Fargate 設定檔 eksctl

使用下列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 Management Console

若要使用 建立 Fargate 設定檔 AWS Management Console

  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 執行角色,選擇 Pod 執行角色,以搭配 Fargate 設定檔使用。只會顯示具有 eks-fargate-pods.amazonaws.com 服務主體的 IAM 角色。如果您沒有看到列出的任何角色,則必須建立一個角色。如需詳細資訊,請參閱Amazon EKS Pod 執行 IAM 角色

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

      注意

      僅支援私有子網路 Pods 在 Fargate 上執行的 。

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

    5. 選擇 Next (下一步)

  6. 設定 上 Pod 選擇頁面,請執行下列動作:

    1. 針對命名空間,輸入要比對的命名空間 Pods.

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

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

    2. (選用) 新增 Kubernetes 標籤至選取器。具體地將它們新增至 Pods 在指定的命名空間中需要相符。

      • 您可以將標籤新增至選取器infrastructure: fargate,以便只有 Pods 在指定的命名空間中,該命名空間也具有 infrastructure: fargate Kubernetes 標籤符合選取器。

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

    3. 選擇 Next (下一步)

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

步驟 4:更新 CoreDNS

根據預設,CoreDNS 設定為在 Amazon EC2 叢集上的 Amazon EKS 基礎設施上執行。如果您想要執行您的 Pods 在叢集中的 Fargate 上,完成下列步驟。

注意

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

  1. 為 建立 Fargate 設定檔 CoreDNS 使用下列命令。Replace (取代) my-cluster 使用您的叢集名稱 111122223333 使用您的帳戶 ID AmazonEKSFargatePodExecutionRole 您的 名稱為 Pod 執行角色,以及 0000000000000001, 00000000000000020000000000000003 私有子網路的 IDs。如果您沒有 Pod 執行角色,您必須先建立一個 (請參閱 步驟 2:建立 Fargate Pod 執行角色)。

    重要

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

    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-0000000000000001 subnet-0000000000000002 subnet-0000000000000003
  2. 執行下列命令,從 中移除eks.amazonaws.com/compute-type : ec2註釋 CoreDNS Pods.

    kubectl patch deployment coredns \ -n kube-system \ --type json \ -p='[{"op": "remove", "path": "/spec/template/metadata/annotations/eks.amazonaws.com~1compute-type"}]'

後續步驟