如何為 Amazon ECS 使用 Fargate Spot 容量供應商?
我想為 Amazon Elastic Container Service (Amazon ECS) 使用 AWS Fargate Spot 容量提供商。
簡短描述
在開始之前,請記住以下事項:
- 不需要建立 Fargate 和 Fargate Spot 容量提供者。它們適用於所有帳戶,只需要與叢集建立關聯即可使用。
- Fargate Spot 容量提供者可以使用 ECS PutClusterCapacityProviders API 和 ECS put-cluster-capacity-providers CLI 命令參考與現有叢集關聯。使用 AWS 管理主控台不支援將 Fargate Spot 容量提供者新增至現有叢集。
- Fargate 和 Fargate Spot 容量提供者是保留的,無法刪除。您可以使用 PutClusterCapacityProviders API 將它們與叢集取消關聯。
- Fargate Spot 要求您的任務使用平台版本 1.3.0 或更高(適用於 Linux),並且Fargate Spot 上的 Windows 容器不支持 Fargate 容量提供程序。
解決方法
**注意:**如果您在執行 AWS CLI 命令時收到錯誤訊息,請確定您使用的是最新版本的 AWS CLI。
建立、關聯以及取消 Fargate Spot 容量提供者與您叢集的關聯
當使用僅限聯網的叢集範本從 Amazon ECS 主控台建立時,Fargate Spot 容量提供者會自動與叢集建立關聯。如需詳細資訊,請參閱使用新主控台建立 Fargate 啟動類型的叢集。
**將 Fargate Spot 容量提供者與您的叢集建立關聯 **
如果 Fargate Spot 容量提供者尚未關聯,您可以使用PutClusterCapacityProviders API 或下列 AWS CLI 命令,將容量提供者與叢集建立關聯:
aws ecs put-cluster-capacity-providers \ --cluster <Cluster_name> \ --capacity-providers FARGATE FARGATE_SPOT \ --default-capacity-provider-strategy capacityProvider=FARGATE,weight=1 capacityProvider=FARGATE_SPOT,weight=1 \ --region <Region>
**重要事項:**若要避免覆寫容量提供者,請將所有現有的容量提供者和容量提供者策略納入前面的命令中。未包含在命令中的容量提供者會與叢集取消關聯。
**將 Fargate Spot 容量提供者與您的叢集分離 **
任何與叢集關聯的現有容量提供者,且 PutClusterCapacityProviders API 調用省略的現有容量提供者都將與叢集取消關聯。若要取消 Fargate Spot 容量提供者與 Amazon ECS 叢集的關聯,請執行以下 AWS CLI 命令:
aws ecs put-cluster-capacity-providers \ --cluster <Cluster_name> \ --capacity-providers FARGATE \ --default-capacity-provider-strategy capacityProvider=FARGATE,weight=1 \ --region <Region>
確認您的 Fargate Spot 容量供應商與您的 Amazon ECS 叢集相關聯
若要確認 Fargate Spot 容量提供者是否與您的 Amazon ECS 叢集相關聯,請執行下列命令:
aws ecs describe-clusters \ --cluster <Cluster_name> \ --region <Region>
輸出看起來類似於以下內容:
Output: "capacityProviders": [ "FARGATE", "FARGATE_SPOT" ]
注意:上述命令的輸出包括capacityProviders區段,其中包含與 Amazon ECS 叢集相關聯的容量提供者。
使用 Fargate Spot 容量提供者執行工作或建立服務
若要使用 Fargate Spot 容量提供者執行工作,請執行下列命令:
aws ecs run-task \ --cluster <Cluster_name> \ --capacity-provider-strategy capacityProvider=FARGATE_SPOT,weight=1 \ --task-definition <Task_definition_family>:<revision> \ --network-configuration "awsvpcConfiguration={subnets=[string,string],securityGroups=[string,string],assignPublicIp=string}" \ --count <Number_of_Tasks> \ --region <Region>
若要建立使用 Fargate Spot 容量供應商的 Amazon ECS 服務,請執行下列命令:
aws ecs create-service \ --cluster <Cluster_name> \ --service-name <Service_name> \ --capacity-provider-strategy capacityProvider=FARGATE,weight=1 capacityProvider=FARGATE_SPOT,weight=1 \ --task-definition <Task_defintition_family>:<revision> \ --network-configuration "awsvpcConfiguration={subnets=[string,string],securityGroups=[string,string],assignPublicIp=string}" \ --desired-count <Number_of_tasks> \ --region <Region>
確認您的工作是否在 Fargate Spot 容量提供者上執行
若要確認您的工作使用 Fargate 容量提供者,請執行下列命令:
aws ecs describe-tasks --cluster <Cluster_name> \ --tasks <TaskID> \ --region <Region>
目前不支援追蹤來自 Amazon CloudWatch 的每項服務的 Fargate OnDemand 和Fargate Spot 使用量。不過,您可以使用 CloudWatch 查看總 Fargate OnDemand 和 Spot 使用量的指標。如需詳細資訊,請參閱 AWS Fargate 使用指標。
常見問題
什麼是 Fargate Spot 的最佳實踐?
- Fargate Spot 非常適合無狀態、容錯的工作負載,但不要僅依賴 Spot 任務來處理關鍵工作負載。相反,配置常規 Fargate 任務的混合。
- 通過捕獲 ** SIGTERM 信號來優雅地處理中斷。收到 SIGTERM 訊號時,最佳做法是將StopTimeout**設定為 120 秒。如需詳細資訊,請參閱使用 ECS 進行正常關機。
- 在 Fargate Spot 上運行的應用程序必須具有容錯能力。
當 FARGATE\ _SPOT 容量不可用時,任務會發生什麼情況?
當 ECS 排程器因容量不可用而無法啟動任務時,會發出SERVICE_TASK_PLACEMENT_FAILURE ** 事件。工作不會進入第一階段PROVISIONING且 ECS 事件中不會顯示通知。ECS 排程器將繼續嘗試啟動工作。如果容量變為可用,則SERVICE_STEADY_STATE** 事件將發出。
當沒有可用的 Fargate Spot 容量時,是否存在容錯移轉到 Fargate?
當沒有可用的 FARGATE\ _SPOT 容量時,不可以將故障返回機制給 FARGATE。
在 ECS 服務中使用容量提供者時,工作如何放置的範例是什麼?
在此範例中,容量提供者策略包含下列兩個容量提供者:
Provider 1: FARGATE | Base:2 Weight:1 Provider 2: FARGATE_SPOT | Base:0 Weight:3
根據此策略,在滿足基本值之後,對於使用 FARGATE, 運行的每一個任務,三個任務都使用 FARGATE\ _SPOT。當建立 ECS 服務時,所需的計數為 ** 5**,則會發生下列情況:
-
使用FARGATE 啟動2個任務以滿足基值,其餘3 個任務以 1:3的比例在FARGATE 和 FARGATE_SPOT 之間分配。
-
使用FARGATE的3 個任務和 ** 2 ** 個在FARGATE_SPOT中運行的任務。
使用此相同的策略,發生的向外擴展事件,並且所需的計數增加到 ** 9**。ECS 調度程序將看到 3 個任務已經使用了滿足基礎 的 FARGATE 運行。此外,它還會看到處於PROVISIONING 狀態的新 4 個任務以 1:3 的比例在 FARGATE 和 FARGATE_SPOT 之間分配。最後的 4個任務是使用FARGATE 和 5 任務在FARGATE_SPOT運行。
相關內容
- 已提問 4 個月前lg...
- 已提問 1 年前lg...
- AWS 官方已更新 2 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 7 個月前
- AWS 官方已更新 2 年前