協助改進此頁面
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
若要為本使用者指南貢獻內容,請點選每個頁面右側面板中的在 GitHub 上編輯此頁面連結。
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
定義哪些 Pod 在啟動時會使用 AWS Fargate
您必須定義至少一個 Fargate 設定檔,指定哪些 Pod 在啟動時使用 Fargate,才能排程您叢集中 Fargate 上的 Pod。
管理員可以使用 Fargate 設定檔宣告哪些 Pod 要在 Fargate 上執行。您可以透過設定檔的選取器來執行此操作。您最多可以將五個選取器新增至每個設定檔。每個選取器必須包含一個命名空間。選取器還可以包括標籤。標籤欄位由多個選用鍵/值對組成。與選取器相符的 Pod 會排程在 Fargate 上執行。比對 Pod 時,會使用命名空間和在選取器中指定的標籤。如果命名空間選取器未以標籤定義,Amazon EKS 會嘗試使用設定檔,將以該命名空間執行的所有 Pod 排程至 Fargate。如果要排程的 Pod 符合 Fargate 設定檔中的任一選取器,則該 Pod 會在 Fargate 上排程。
如果 Pod 與多個 Fargate 設定檔相符,您可以將下列 Kubernetes 標籤新增至 Pod 規格,以指定 Pod 使用哪個設定檔:eks.amazonaws.com/fargate-profile: my-fargate-profile。Pod 必須與該設定檔中的選取器相符,才能排程至 Fargate。Kubernetes 親和性/反親和性規則不適用,並且對 Amazon EKS Fargate Pod 而言也非必要。
建立 Fargate 設定檔時,您必須指定 Pod 執行角色。此執行角色適用於使用設定檔在 Fargate 基礎設施上執行的 Amazon EKS 元件。其會新增至叢集的 Kubernetes 角色型存取控制kubelet 就可以註冊到您的 Amazon EKS 叢集,並作為節點出現在您的叢集中。Pod 執行角色也為 Fargate 基礎結構提供 IAM 許可,以允許對 Amazon ECR 映像儲存庫的讀取存取權。如需詳細資訊,請參閱 Amazon EKS Pod 執行 IAM 角色。
Fargate 設定檔無法變更。不過,您可以建立新的已更新設定檔來取代現有設定檔,然後刪除原始的設定檔。
注意
刪除設定檔時,使用 Fargate 設定檔執行的任何 Pod 將停止並進入待定狀態。
如果在叢集中的任何 Fargate 設定檔處於 DELETING 狀態,您必須等候該 Fargate 設定檔刪除後,才能在該叢集建立任何其他設定檔。
注意
Fargate 目前不支援 Kubernetes topologySpreadConstraints
Amazon EKS 和 Fargate 會嘗試在 Fargate 設定檔所定義的每個子網路中散佈 Pod。不過,最終可能會產生不均勻的散佈結果。如果必須產生均勻的散佈結果,請使用兩個 Fargate 設定檔。在您想要部署兩個複本且不希望任何停機時間的情況下,均勻的散佈結果相當重要。我們建議每個設定檔只定義一個子網路。
Fargate 描述檔元件
下列元件包含在 Fargate 描述檔中。
- Pod 執行角色
-
當您的叢集在 AWS Fargate 上建立 Pod 時,在 Fargate 基礎結構上執行的
kubelet必須代表您呼叫 AWS API。例如,它必須透過呼叫從 Amazon ECR 提取容器映像。Amazon EKS Pod 執行角色提供進行此類工作的 IAM 許可。建立 Fargate 設定檔時,您必須指定要搭配 Pod 使用的 Pod 執行角色。此角色會新增至叢集的 Kubernetes 角色型存取控制
(RBAC),以進行身分授權。這是為了讓在 Fargate 基礎結構上執行的 kubelet可以註冊到您的 Amazon EKS 叢集並作為節點出現在您的叢集中。如需詳細資訊,請參閱 Amazon EKS Pod 執行 IAM 角色。 - 子網路
-
要在其中啟動 Pod 並使用該設定檔的子網路 ID。目前不會對在 Fargate 上執行的 Pod 指派公有 IP 位址。因此,此參數僅接受私有子網路 (不具網際網路閘道的直接路由)。
- 選取器
-
要與 Pod 相符的選取器,以使用此 Fargate 設定檔。您最多可在一個 Fargate 設定檔中指定五個選取器。選取器具有下列元件:
-
命名空間:您必須指定選取器的命名空間。選取器僅與在此命名空間中建立的 Pod 相符。不過,您可以建立多個選取器來定義多個命名空間。
-
標籤:您可以選擇指定符合選取器的 Kubernetes 標籤。選取器僅與擁有在選取器中指定之所有標籤的 Pod 相符。
-
Fargate 設定檔萬用字元
除了 Kubernetes 允許的字元之外,您還可以在命名空間、標籤索引鍵和標籤值的選取器條件中使用 * 和 ?:
-
*代表無、一個或多個字元。例如,prod*可以代表prod和prod-metrics。 -
?代表單一字元 (例如,value?可以代表valuea)。不過,它不能代表value和value-a,因為?只能代表確切一個字元。
這些萬用字元適用於任何位置和組合 (例如,prod*、*dev,以及 frontend*?)。其他萬用字元和模式比對形式 (例如規則運算式) 則不支援。
如果 Pod 規格中的命名空間和標籤有多個相符的設定檔,Fargate 會根據設定檔名稱的英數字元排序選擇設定檔。例如,如果設定檔 A (名稱為 beta-workload) 和設定檔 B (名稱為 prod-workload) 都具有要啟動的 Pod 的相符選取器,則 Fargate 將為 Pod 選擇設定檔 A (beta-workload)。Pod 在 Pod 上具有含設定檔 A 的標籤 (例如,eks.amazonaws.com/fargate-profile=beta-workload)。
如果您想要將現有的 Fargate Pod 移轉至使用萬用字元的新設定檔,有兩種方法:
-
使用相符的選取器建立新的設定檔,然後刪除舊設定檔。標有舊設定檔的 Pod 會重新排程為新的相符設定檔。
-
如果您想要移轉工作負載,但不確定每個 Fargate Pod 上有哪些 Fargate 標籤,則可使用以下方法。建立新的設定檔,其名稱在同一叢集上的設定檔中按英數字元順序排列在第一位。然後,回收需要移轉到新設定檔的 Fargate Pod。
建立 Fargate 設定檔
本節說明如何建立 Fargate 設定檔。您還必須建立用於 Fargate 設定檔的 Pod 執行角色。如需詳細資訊,請參閱 Amazon EKS Pod 執行 IAM 角色。只有私有子網路支援在 Fargate 上執行的 Pod (具有對 AWS 服務的 NAT 閘道存取,但沒有網際網路閘道的直接路由)。因此,您叢集的 VPC 必須具有可用的私有子網路。
您可以執行下列操作來建立設定檔:
eksctl
若要使用 eksctl 建立 Fargate 設定檔
使用下列 eksctl 命令建立您的 Fargate 設定檔,並以您自己的值取代每一個範例值。您必須指定一個命名空間。不過,--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 設定檔
-
開啟 Amazon EKS 主控台
。 -
選擇要為其建立 Fargate 設定檔的叢集。
-
選擇 Compute (運算) 索引標籤。
-
在 Fargate profiles (Fargate 設定檔) 下,選擇 Add Fargate profile (新增 Fargate 設定檔)。
-
在 Configure Fargate profile (設定 Fargate 設定檔) 頁面上,執行以下作業:
-
對於 Name (名稱),輸入 Fargate 設定檔的唯一名稱,例如
my-profile。 -
對於 Pod 執行角色,請選擇要搭配您的 Fargate 設定檔使用的 Pod 執行角色。只會顯示具有
eks-fargate-pods.amazonaws.com服務委託人的 IAM 角色。如果未列出任何角色,您必須建立一個。如需詳細資訊,請參閱 Amazon EKS Pod 執行 IAM 角色。 -
視需要修改選取的子網路。
注意
只有私有子網路支援在 Fargate 上執行的 Pod。
-
對於 Tags (標籤),您可以選擇標記 Fargate 設定檔。這些標籤不會傳播至與設定檔相關聯的其他資源,例如 Pod。
-
選擇下一步。
-
-
在設定 Pod 選擇頁面上,執行以下作業:
-
針對命名空間,輸入與 Pod 相符的命名空間。
-
您可以使用特定的命名空間進行比對,例如
kube-system或default。 -
您可以使用某些萬用字元 (例如
prod-*) 來比對多個命名空間 (例如prod-deployment和prod-test)。如需詳細資訊,請參閱 Fargate 設定檔萬用字元。
-
-
(選用) 將 Kubernetes 標籤新增至選取器。將其特別新增至需與特定命名空間中的 Pod 相符的選取器。
-
您可以將標籤
infrastructure: fargate新增至選取器,因此只有在也有infrastructure: fargateKubernetes 標籤之指定命名空間中的 Pod 與選取器相符。 -
您可以使用某些萬用字元 (例如
key?: value?) 來比對多個命名空間 (例如keya: valuea和keyb: valueb)。如需詳細資訊,請參閱 Fargate 設定檔萬用字元。
-
-
選擇下一步。
-
-
在 Review and create (檢閱和建立) 頁面,檢閱您 Fargate 設定檔的資訊並選擇 Create (建立)。