定義啟動 AWS Fargate 時的Pods用途 - Amazon EKS

協助改善此頁面

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

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

定義啟動 AWS Fargate 時的Pods用途

重要

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

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

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

如果 Pod 符合多個 Fargate 設定檔,您可以將以下 Pod 標籤新增至 Kubernetes 規格,以指定 Pod 使用哪個設定檔:eks.amazonaws.com/fargate-profile: my-fargate-profile。Pod必須與該配置文件中的選擇器匹配才能將其安排到 Fargate 上。 Kubernetes親和性/反親和性規則不適用,Amazon Fargate 也不是必需的。EKS 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 分Pods佈在 Fargate 個人資料中定義的每個子網。不過,最終可能會產生不均勻的散佈結果。如果必須產生均勻的散佈結果,請使用兩個 Fargate 設定檔。在您想要部署兩個副本且不希望任何停機時間的情況下,均勻的散佈結果相當重要。我們建議每個設定檔只定義一個子網路。

Fargate 描述檔元件

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

Pod 執行角色

當您的叢集建立時 AWS Fargatekubelet,Pods在 Fargate 基礎結構上執行的叢集必須代表您撥 AWS APIs打電話。例如,它需要撥打電話以從 Amazon 提取容器映像ECR。Amazon EKS Pod 執行角色提供執行此操作的IAM許可。

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

子網

要啟動Pods到IDs的子網路使用此設定檔。目前不會對在 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在 Fargate 上執行的僅支援具有NAT閘道存取權的私有子網路 AWS 服務,但不支援直接路由到網 Internet Gateway。這樣您的叢集VPC必須有可用的私有子網路。您可以使用 eksctl 或 AWS Management Console建立描述檔。

eksctl

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

AWS Management Console
若要建立叢集的 Fargate 設定檔,請使用 AWS Management Console
  1. https://console.aws.amazon.com/eks/家裡 #/集群打開 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. 選擇 Next (下一步)

  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. 選擇 Next (下一步)

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