排空 Amazon ECS 容器實例 - Amazon Elastic Container Service

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

排空 Amazon ECS 容器實例

有時您可能需要從叢集中移除容器執行個體,例如執行系統更新或縮減叢集容量。Amazon ECS 可讓您將容器執行個體轉換為 DRAINING 狀態。這稱為容器執行個體耗盡。將容器執行個體設定為 DRAINING 時,Amazon ECS 會避免在容器執行個體中放置新的任務排程。

服務的耗盡行為

會立即停止屬於 PENDING 狀態之服務的任何任務。如果叢集中有可用的容器執行個體容量,服務排程器將會啟動取代任務。如果容器執行個體容量不足,則會傳送服務事件訊息,指出該問題。

在容器執行個體上處於 RUNNING 狀態的服務的任務會轉換為 STOPPED 狀態。服務排程器會嘗試根據服務的部署類型和部署組態參數 (minimumHealthyPercentmaximumPercent) 來取代任務。如需詳細資訊,請參閱 Amazon ECS 服務Amazon ECS 服務定義參數

  • 如果 minimumHealthyPercent 低於 100%,則排程器在任務取代期間可以暫時忽略 desiredCount。例如,desiredCount 為四項任務,下限 50% 允許排程器先停止兩項現有的任務,再開始兩項新的任務。如果下限為 100%,則直到替代任務視為正常運作前,服務排程器都無法移除現有的任務。如果未使用負載平衡器的服務任務為 RUNNING 狀態,則視為運作良好。如果使用負載平衡器的服務任務為 RUNNING 狀態,且負載平衡器回報託管所在的容器執行個體運作良好,任務即視為運作良好。

    重要

    如果您使用 Spot 執行個體且 minimumHealthyPercent 大於或等於 100%,則在 Spot 執行個體終止之前,服務將沒有足夠的時間取代任務。

  • maximumPercent 參數代表任務取代期間的執行任務數量上限,這允許您定義替代批次大小。例如,如果 desiredCount 為四項任務,可先啟動四項新任務再停止四項要耗盡任務的上限為 200% (前提是有執行此作業所需的可用叢集資源)。如果上限為 100%,則在要耗盡的任務停止之前,皆無法啟動替代任務。

    重要

    如果 minimumHealthyPercentmaximumPercent 兩者皆為 100%,則服務無法刪除現有任務,也無法啟動替換任務。這可以防止容器執行個體成功耗盡,並避免進行新部署。

獨立任務的耗盡行為

處於 PENDINGRUNNING 狀態的任何獨立任務不會受到影響;您必須等待其自行停止或手動停止。容器執行個體將維持 DRAINING 狀態。

當執行個體上執行的所有任務轉換為 STOPPED 狀態時,容器執行個體完成耗盡。容器執行個體會保持在 DRAINING 狀態,直到再次啟動或刪除為止。您可以使用具有containerInstance參數的ListTasks操作來驗證容器執行個體上的任務狀態,以取得執行個體上的任務清單,然後使用 Amazon Resource Name (ARN) 或每個任務的 ID 進行DescribeTasks操作以驗證任務狀態。

當您準備好讓容器執行個體重新開始託管任務時,您可以將容器執行個體的狀態從 DRAINING 變更為 ACTIVE。然後,Amazon ECS 服務排程器將再次考慮容器執行個體以進行任務放置。

程序

透過運用新的 AWS Management Console,可使用下列步驟將容器執行個體設定為耗盡。

您也可以使用 UpdateContainerInstancesStateAPI 動作或更新容器執行個體狀態命令,將容器執行個體的狀態變更為。DRAINING

AWS Management Console
  1. 開啟主控台,網址為 https://console.aws.amazon.com/ecs/v2

  2. 在導覽窗格中,選擇叢集

  3. Clusters (叢集) 頁面上,選擇託管您執行個體的叢集。

  4. Cluster : name (叢集:名稱) 頁面上,選擇 Infrastructure (基礎基礎設施) 索引標籤。然後,在 Container instances (容器執行個體)下,選取您要耗盡之每個容器執行個體的核取方塊。

  5. 依序選擇動作耗盡