排空 Amazon ECS 容器執行個體
有時候您可能需要從叢集中移除容器執行個體,以便執行系統更新或叢集容量規模縮減等作業。Amazon ECS 可讓您將容器執行個體轉換為 DRAINING 狀態。這稱為容器執行個體耗盡。將容器執行個體設定為 DRAINING 時,Amazon ECS 會避免在容器執行個體中放置新的任務排程。
服務的耗盡行為
會立即停止屬於 PENDING 狀態之服務的任何任務。如果叢集中有可用的容器執行個體容量,服務排程器將會啟動取代任務。如果容器執行個體容量不足,則會傳送服務事件訊息,指出該問題。
在容器執行個體上處於 RUNNING 狀態的服務的任務會轉換為 STOPPED 狀態。服務排程器會嘗試根據服務的部署類型和部署組態參數 (minimumHealthyPercent 和 maximumPercent) 來取代任務。如需詳細資訊,請參閱Amazon ECS 服務及Amazon ECS 服務定義參數。
-
如果
minimumHealthyPercent低於 100%,則排程器在任務取代期間可以暫時忽略desiredCount。例如,desiredCount為四項任務,下限 50% 允許排程器先停止兩項現有的任務,再開始兩項新的任務。如果下限為 100%,則直到替代任務視為正常運作前,服務排程器都無法移除現有的任務。如果未使用負載平衡器的服務任務為RUNNING狀態,則視為運作良好。如果使用負載平衡器的服務任務為RUNNING狀態,且負載平衡器回報託管所在的容器執行個體運作良好,任務即視為運作良好。重要
如果您使用 Spot 執行個體且
minimumHealthyPercent大於或等於 100%,則在 Spot 執行個體終止之前,服務將沒有足夠的時間取代任務。 -
maximumPercent參數代表任務取代期間的執行任務數量上限,這允許您定義替代批次大小。例如,如果desiredCount為四項任務,可先啟動四項新任務再停止四項要耗盡任務的上限為 200% (前提是有執行此作業所需的可用叢集資源)。如果上限為 100%,則在要耗盡的任務停止之前,皆無法啟動替代任務。重要
如果
minimumHealthyPercent和maximumPercent兩者皆為 100%,則服務無法刪除現有任務,也無法啟動替換任務。這可以防止容器執行個體成功耗盡,並避免進行新部署。
獨立任務的耗盡行為
處於 PENDING 或 RUNNING 狀態的任何獨立任務不會受到影響;您必須等待其自行停止或手動停止。容器執行個體將維持 DRAINING 狀態。
Amazon ECS 受管執行個體的排空行為
Amazon ECS 受管執行個體終止程序可確保工作負載優雅轉換,同時最佳化成本與維護系統運作狀態。終止系統為執行個體終止提供三種不同的決策路徑,每種都具有不同的時間特性與客戶影響設定檔。
- 客戶啟動的終止
-
在您需要從服務中立即移除容器執行個體時,提供執行個體移除的直接控制權。您在
force請求參數設定為 true 的情況下執行deregister-container-instance。這表示即使有任何執行中的工作負載,仍需要立即終止。 - 系統啟動的閒置終止
-
透過智慧型閒置偵測實作成本最佳化,識別不再為工作負載提供服務的執行個體。Elastic Workload Service (EWS) 會實作複雜的閒置偵測演算法,可監控執行個體使用率,並針對在可設定期間保持閒置的執行個體啟動終止。
- 基礎結構重新整理終止
-
透過 Node Manager 的自然衰減政策實作主動基礎結構管理,其中執行個體會定期重新整理,確保在最新的平台版本上執行,同時維持安全狀態。節點管理員會實作存留時間 (TTL) 政策,為已達到最大營運生命週期的執行個體啟動優雅終止。
終止系統會實作兩階段方法,可平衡工作負載持續性與基礎結構管理需求。
階段 1:優雅完成期間
在此階段,系統會實作優先考量工作負載持續性的優雅排空策略。服務任務會透過正常的 Amazon ECS 排程程序優雅排空。獨立任務可能會自然完成,因此會持續執行。系統會監控所有任務,透過自然完成程序達到停止狀態。
階段 2:硬性截止日期強制執行
當優雅完成在可接受的時間範圍內未達成終止目標時,系統會實作硬性截止日期強制執行。硬性截止日期通常設定為排空啟動時間加 7 天,為優雅完成提供大量時間,同時維持營運需求。強制執行包括自動強制取消註冊程序,並立即終止所有剩餘的任務,無論完成狀態如何。
當執行個體上執行的所有任務轉換為 STOPPED 狀態時,容器執行個體完成耗盡。容器執行個體會保持在 DRAINING 狀態,直到再次啟動或刪除為止。您可以確認容器執行個體上的任務狀態,方法是搭配使用 ListTasks 操作與 containerInstance 參數以取得執行個體上的任務清單,然後搭配使用 DescribeTasks 操作與每個任務的 Amazon Resource Name (ARN) 或 ID 以驗證任務狀態。
當您準備好讓容器執行個體重新開始託管任務時,您可以將容器執行個體的狀態從 DRAINING 變更為 ACTIVE。然後,Amazon ECS 服務排程器將再次考慮容器執行個體以進行任務置放。
程序
透過運用新的 AWS Management Console,可使用下列步驟將容器執行個體設定為耗盡。
您也可以使用 UpdateContainerInstancesState API 動作或 update-container-instances-state 命令將容器執行個體的狀態變更成 DRAINING。
AWS Management Console
開啟主控台,網址為 https://console.aws.amazon.com/ecs/v2
。 -
在導覽窗格中,選擇叢集。
-
在 Clusters (叢集) 頁面上,選擇託管您執行個體的叢集。
-
在 Cluster :
name(叢集:名稱) 頁面上,選擇 Infrastructure (基礎基礎設施) 索引標籤。然後,在 Container instances (容器執行個體)下,選取您要耗盡之每個容器執行個體的核取方塊。 -
依序選擇動作、耗盡。