本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
為您的叢集開始使用 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-system
和 default
命名空間中。使用下列程序來為您想要搭配 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
-
開啟 Amazon EKS 主控台
。 -
選擇要為其建立 Fargate 設定檔的叢集。
-
選擇 Compute (運算) 索引標籤。
-
在 Fargate profiles (Fargate 設定檔) 下,選擇 Add Fargate profile (新增 Fargate 設定檔)。
-
在 Configure Fargate profile (設定 Fargate 設定檔) 頁面上,執行以下操作:
-
對於 Name (名稱),輸入您 Fargate 描述檔的名稱。名稱必須是唯一的。
-
針對 Pod 執行角色,選擇 Pod 執行角色,以搭配 Fargate 設定檔使用。只會顯示具有
eks-fargate-pods.amazonaws.com
服務主體的 IAM 角色。如果您沒有看到列出的任何角色,則必須建立一個角色。如需詳細資訊,請參閱Amazon EKS Pod 執行 IAM 角色。 -
視需要修改選取的子網路。
注意
僅支援私有子網路 Pods 在 Fargate 上執行的 。
-
對於 Tags (標籤),您可以選擇標記 Fargate 設定檔。這些標籤不會傳播到與設定檔相關聯的其他資源,例如 Pods.
-
選擇 Next (下一步)。
-
-
在 設定 上 Pod 選擇頁面,請執行下列動作:
-
針對命名空間,輸入要比對的命名空間 Pods.
-
您可以使用特定的命名空間進行比對,例如
kube-system
或default
。 -
您可以使用某些萬用字元 (例如
prod-*
) 來比對多個命名空間 (例如prod-deployment
和prod-test
)。如需詳細資訊,請參閱Fargate 設定檔萬用字元。
-
-
(選用) 新增 Kubernetes 標籤至選取器。具體地將它們新增至 Pods 在指定的命名空間中需要相符。
-
您可以將標籤新增至選取器
infrastructure: fargate
,以便只有 Pods 在指定的命名空間中,該命名空間也具有infrastructure: fargate
Kubernetes 標籤符合選取器。 -
您可以使用某些萬用字元 (例如
key?: value?
) 來比對多個命名空間 (例如keya: valuea
和keyb: valueb
)。如需詳細資訊,請參閱Fargate 設定檔萬用字元。
-
-
選擇 Next (下一步)。
-
-
在 Review and create (檢閱和建立) 頁面,檢閱您 Fargate 設定檔的資訊並選擇 Create (建立)。
步驟 4:更新 CoreDNS
根據預設,CoreDNS 設定為在 Amazon EC2 叢集上的 Amazon EKS 基礎設施上執行。如果您只想要執行您的 Pods 在叢集中的 Fargate 上,完成下列步驟。
注意
如果透過 --fargate
選項使用 eksctl
建立叢集,您可以直接跳至 後續步驟。
-
為 建立 Fargate 設定檔 CoreDNS 使用下列命令。Replace (取代)
my-cluster
使用您的叢集名稱111122223333
使用您的帳戶 IDAmazonEKSFargatePodExecutionRole
您的 名稱為 Pod 執行角色,以及0000000000000001
,0000000000000002
和0000000000000003
私有子網路的 IDs。如果您沒有 Pod 執行角色,您必須先建立一個 (請參閱 步驟 2:建立 Fargate Pod 執行角色)。重要
角色 ARN 不能包含 以外的路徑
/
。例如,如果您的角色名稱是development/apps/my-role
,則需要在為角色指定 ARNmy-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
-
執行下列命令,從 中移除
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"}]'
後續步驟
-
您可以透過以下工作流程開始遷移現有的應用程式,以在 Fargate 上執行。
-
建立 Fargate 設定檔 符合您應用程式 Kubernetes 命名空間和 Kubernetes 標籤。
-
刪除並重新建立任何現有的 Pods 以便在 Fargate 上排程。例如,以下命令會觸發
coredns
部署的推展。您可以修改命名空間和部署類型,以更新您的特定 Pods.kubectl rollout restart -n kube-system deployment coredns
-
-
部署 使用 Application Load Balancer 路由應用程式和 HTTP 流量以允許 的輸入物件 Pods 在 Fargate 上執行。
-
您可以使用 使用垂直 Pod Autoscaler 調整 Pod 資源為 Fargate 設定 CPU 和記憶體的初始正確大小 Pods,然後使用 使用 Horizontal Pod Autoscaler 擴展 Pod 部署來擴展這些 Pods。 如果您想要垂直 Pod Autoscaler 自動重新部署 Pods 使用較高的 CPU 和記憶體組合,將垂直 Pod Autoscaler 模式設定為
Auto
或Recreate
。這是為了確認功能可以運作正確。如需詳細資訊,請參閱 上的垂直 Pod Autoscaler文件 GitHub. -
您可以按照這些指示設定 AWS Distro for OpenTelemetry
(ADOT) 收集器以進行應用程式監控。