AWS Fargate 設定檔 - Amazon EKS

協助改善此頁面

想要為此使用者指南做出貢獻嗎? 捲動至此頁面底部,然後選取 [編輯此頁面於] GitHub。您的貢獻將有助於使我們的用戶指南更適合所有人。

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

AWS Fargate 設定檔

重要

AWS Fargate Amazon EKS 在 AWS GovCloud (美國東部)和 AWS GovCloud (美國西部)中不可用。

您必須定義至少一個 Fargate 設定檔,指定哪些 Pods 在啟動時使用 Fargate,然後才能排程在叢集 Fargate 上的 Pods。

管理員可以使用 Fargate 設定檔宣告哪些 Pods 要在 Fargate 上執行。您可以透過設定檔的選取器來執行此操作。您最多可以將五個選取器新增至每個設定檔。每個選取器必須包含一個命名空間。選取器還可以包括標籤。標籤欄位由多個選用鍵/值對組成。與選取器相符的 Pod 會排程在 Fargate 上執行。比對 Pod 時,會使用命名空間和在選取器中指定的標籤。如果命名空間選取器未以標籤定義,Amazon EKS 會嘗試使用設定檔,將以該命名空間執行的所有 Pods 排程至 Fargate。如果與 Fargate to-be-scheduled Pod 配置文件中的任何選擇器匹配,則該Pod選擇器在 Fargate 上進行計劃。

如果 Pod 符合多個 Fargate 設定檔,您可以將以下 Pod 標籤新增至 Kubernetes 規格,以指定 Pod 使用哪個設定檔:eks.amazonaws.com/fargate-profile: my-fargate-profile。不過,Pod 必須符合該設定檔中的選取器,才能排程至 Fargate。Kubernetes 親和性/反親和性規則並不適用,對 Amazon EKS Fargate Pods 而言也非必要。

建立 Fargate 設定檔時,您必須指定 Pod 執行角色。此執行角色適用於使用設定檔在 Fargate 基礎設施上執行的 Amazon EKS 元件。此角色會新增至叢集的 Kubernetes 角色型存取控制 (RBAC),以進行授權。這樣一來,在 Fargate 基礎設施上執行的 kubelet 就可以註冊到您的 Amazon EKS 叢集,並作為節點出現在您的叢集中。Pod 執行角色也為 Fargate 基礎設施提供 IAM 許可,以允許對 Amazon ECR 映像儲存庫的讀取存取權。如需詳細資訊,請參閱 Amazon EKS Pod 執行 IAM 角色

Fargate 設定檔無法變更。不過,您可以建立新的已更新設定檔來取代現有設定檔,然後刪除原始的設定檔。

注意

刪除設定檔時,使用 Fargate 設定檔執行的任何 Pods 將停止並進入待定狀態。

如果在叢集中的任何 Fargate 設定檔處於 DELETING 狀態,您必須等候該 Fargate 設定檔刪除後,才能在該叢集建立任何其他設定檔。

Amazon EKS 和 Fargate 會嘗試在 Fargate 設定檔所定義的每個子網路中散佈 Pods。不過,最終可能會產生不均勻的散佈結果。如果必須產生均勻的散佈結果,請使用兩個 Fargate 設定檔。在您想要部署兩個副本且不希望任何停機時間的情況下,均勻的散佈結果相當重要。我們建議每個設定檔只定義一個子網路。

Fargate 描述檔元件

下列元件包含在 Fargate 描述檔中。

Pod 執行角色

當您的叢集建立時 AWS Fargatekubelet,Pods在 Fargate 基礎結構上執行的叢集必須代表您呼叫 AWS API。例如,它必須透過呼叫從 Amazon ECR 提取容器映像。Amazon EKS Pod 執行角色提供進行此類工作的 IAM 許可。

建立 Fargate 設定檔時,您必須指定要搭配 Pods 使用的 Pod 執行角色。此角色會新增至叢集的 Kubernetes 角色型存取控制 (RBAC),以進行授權。這是為了讓在 Fargate 基礎設施上執行的 kubelet 可以註冊到您的 Amazon EKS 叢集並作為節點出現在您的叢集中。如需詳細資訊,請參閱 Amazon EKS Pod 執行 IAM 角色

子網

要在其中啟動 Pods 並使用該設定檔的子網路 ID。目前不會對在 Fargate 上執行的 Pods 指派公用 IP 地址。因此,此參數僅接受私有子網路 (不具網際網路閘道的直接路由)。

選取器

要與 Pods 比對以使用此 Fargate 設定檔的選擇器。您最多可在一個 Fargate 設定檔中指定五個選取器。選取器具有下列元件:

  • 命名空間:您必須指定選取器的命名空間。選取器只會比對在此命名空間中建立的 Pods。不過,您可以建立多個選取器來定義多個命名空間。

  • 標籤:您可以選擇指定符合選取器的 Kubernetes 標籤。選取器僅符合擁有在選取器中指定之所有標籤的 Pods。

Fargate 設定檔萬用字元

除了 Kubernetes 允許的字元之外,您還可以在命名空間、標籤索引鍵和標籤值的選取器條件中使用 *?

  • * 代表無、一個或多個字元。例如,prod* 可以代表 prodprod-metrics

  • ? 代表單一字元 (例如,value? 可以代表 valuea)。不過,它不能代表 valuevalue-a,因為 ? 只能代表確切一個字元。

這些萬用字元適用於任何位置和組合 (例如,prod**dev,以及 frontend*?)。其他萬用字元和模式比對形式 (例如規則運算式) 則不支援。

如果 Pod 規格中的命名空間和標籤有多個相符的設定檔,Fargate 會根據設定檔名稱的英數字元排序選擇設定檔。例如,如果設定檔 A (名稱為 beta-workload) 和設定檔 B (名稱為 prod-workload) 都具有要啟動的 Pods 的相符選取器,則 Fargate 將為 Pods 選擇設定檔 A (beta-workload)。Pods 在 Pods 上具有含設定檔 A 的標籤 (例如 eks.amazonaws.com/fargate-profile=beta-workload)。

如果您想要將現有的 Fargate Pods 遷移至使用萬用字元的新設定檔,有兩種方法:

  • 使用相符的選取器建立新的設定檔,然後刪除舊設定檔。標有舊設定檔的 Pod 會重新排程為新的相符設定檔。

  • 如果您想要遷移工作負載,但不確定每個 Fargate Pod 上有哪些 Fargate 標籤,則可使用以下方法。建立新的設定檔,其名稱在同一叢集上的設定檔中按英數字元順序排列在第一位。然後,回收需要遷移到新設定檔的 Fargate Pods。

建立 Fargate 設定檔

本主題說明如何建立 Fargate 設定檔。您還必須建立用於 Fargate 設定檔的 Pod 執行角色。如需詳細資訊,請參閱Amazon EKS Pod 執行 IAM 角色。 Pods只有在具有 NAT 閘道存取權的私有子網路上才支援在 Fargate 上執行 AWS 服務,但不支援直接路由到網 Internet Gateway。因此,您叢集的 VPC 必須具有可用的私有子網路。您可以使用 eksctl 或 AWS Management Console建立描述檔。

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

eksctl version

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

eksctl
使用 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-namespacekey=value 標籤可以使用某些萬用字元。如需詳細資訊,請參閱 Fargate 設定檔萬用字元

AWS Management Console
Fargate 使用 AWS Management Console
  1. https://console.aws.amazon.com/eks/home#/clusters 開啟 Amazon EKS 主控台。

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

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

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

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

    1. 對於 Name (名稱),輸入 Fargate 設定檔的唯一名稱,例如 my-profile

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

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

      注意

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

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

    5. 選擇下一步

  6. Configure Pod selection (設定 選擇) 頁面上,執行以下操作:

    1. 針對 Namespace (命名空間),輸入符合 Pods 的命名空間。

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

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

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

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

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

    3. 選擇下一步

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

刪除 Fargate 描述檔

本主題說明如何刪除 Fargate 設定檔。

當您刪除 Fargate 設定檔時,使用設定檔排程至 Fargate 的任何 Pods 皆會遭到刪除。若這些 Pods 符合其他 Fargate 設定檔,其便會使用該設定檔在 Fargate 上排程。如果其不再符合任何 Fargate 設定檔,則不會排程至 Fargate,且可能仍為待定狀態。

一個叢集中一次只能有一個 Fargate 描述檔可以處於 DELETING 狀態。請等候 Fargate 描述檔完成刪除動作,才可以刪除該叢集中的任何其他描述檔。

您可以使用eksctl、或刪除 AWS Management Console設定檔 AWS CLI。選取含有要用來刪除描述檔之工具名稱的索引標籤。

eksctl

使用 eksctl 刪除 Fargate 設定檔

使用下列命令從叢集刪除設定檔。使用您自己的值取代每一個 ‭example value‬。

eksctl delete fargateprofile --name my-profile --cluster my-cluster
AWS Management Console
若要從叢集中刪除 Fargate 設定檔,請使用 AWS Management Console
  1. https://console.aws.amazon.com/eks/home#/clusters 開啟 Amazon EKS 主控台。

  2. 在左側導覽窗格中選擇 Clusters (叢集)。在叢集清單中,選擇您要從中刪除 Fargate 設定檔的叢集。

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

  4. 選擇要刪除的 Fargate 設定檔,然後選擇 Delete (刪除)。

  5. Delete Fargate profile (刪除 Fargate 設定檔) 頁面上,輸入設定檔名稱,然後選擇 Delete (刪除)。

AWS CLI

使用 AWS CLI刪除 Fargate 設定檔

使用下列命令從叢集刪除設定檔。使用您自己的值取代每一個 ‭example value‬。

aws eks delete-fargate-profile --fargate-profile-name my-profile --cluster-name my-cluster