使用策略定義 Amazon ECS 任務放置 - Amazon Elastic Container Service

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

使用策略定義 Amazon ECS 任務放置

對於使用 EC2 啟動類型的任務,Amazon ECS 必須根據任務定義中指定的要求 (例如 CPU 和記憶體) 決定要放置任務的位置。同樣地,當您縮減任務計數時,Amazon ECS 必須判斷要終止的任務。您可以套用任務置放策略和限制條件,來自訂 Amazon ECS 如何放置和終止任務。

預設任務放置策略取決於您是手動執行工作 (獨立工作) 還是在服務中執行工作。如果任務是作為 Amazon ECS 服務的一部分來執行,任務置放策略會是使用 attribute:ecs.availability-zonespread。服務中的任務無預設任務置放限制。如需詳細資訊,請參閱 在 Amazon ECS 上安排您的容器

注意

任務置放策略是一種最佳作法。即使最佳置放選項無法使用,Amazon ECS 仍然會嘗試放置任務。不過,任務置放限制條件具有約束性,且可能妨礙任務置放。

您可以同時使用任務置放策略和限制條件。例如,您可以使用任務放置策略和任務放置限制,根據每個可用區域內的記憶體,跨可用區域和分箱封裝任務來分配工作,但僅適用於 G2 執行個體。

Amazon ECS 放置任務時,會使用下列程序來選取容器執行個體:

  1. 識別符合工作定義中 CPU、GPU、記憶體和連接埠需求的容器執行個體。

  2. 識別符合任務放置限制的容器執行個體。

  3. 識別符合任務放置策略的容器執行個體。

  4. 選取要放置工作的容器執行個體。

您可以在服務定義中指定任務放置策略,或使用placementStrategy參數指定任務定義。

"placementStrategy": [ { "field": "The field to apply the placement strategy against", "type": "The placement strategy to use" } ]

您可以在執行工作 (RunTask)、建立新服務 () 或更新現有服務 (UpdateService) 時指定策略。CreateService

下表說明可用的類型和欄位。

type 有效的欄位值
binpack

任務會放置於容器執行個體上,以便保留最少量的未使用 CPU 或記憶體。此策略會將使用中的容器執行個體數量減至最少。

當使用此策略並採取縮減動作時,Amazon ECS 會終止任務。此策略根據任務終止後保留在容器執行個體上的資源量來執行此操作。在任務終止後保留最多可用資源的容器執行個體,會終止該任務。

  • cpu

  • memory

random

隨機放置任務。

未使用
spread

根據指定的值平均放置任務。

服務任務會根據該服務的任務進行散佈。獨立的任務會以同一任務群組的任務為基礎分配。如需有關任務群組的詳細資訊,請參閱 群組相關的 Amazon ECS 任務

當使用 spread 策略並執行縮減動作時,Amazon ECS 會選擇個在可用區域之間保持平衡的任務進行終止。在一個可用區域內,任務會被隨機選取。

  • instanceId(或host具有相同效果)

  • 套用至容器執行個體的任何平台或自訂屬性,例如 attribute:ecs.availability-zone

任務放置策略也可以為現有服務更新。如需詳細資訊,請參閱 Amazon ECS 如何在容器執行個體上放置任務

您可以透過依照您希望執行的順序建立策略陣列來建立使用多個策略的任務放置策略。例如,如果您想要跨可用區域分散任務,然後在每個可用區域內根據記憶體對任務進行分箱封裝,請指定可用區域策略,然後指定記憶體策略。如需策略範例,請參閱 Amazon ECS 任務放置策略示例