透過取代任務來部署 Amazon ECS服務 - Amazon Elastic Container Service

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

透過取代任務來部署 Amazon ECS服務

當您建立使用滾動更新 (ECS) 部署類型的服務時,Amazon ECS服務排程器會將目前正在執行的任務取代為新任務。Amazon 在滾動更新期間從服務ECS新增或移除的任務數量,是由服務部署組態所控制。

Amazon ECS使用以下參數來判斷任務的數量:

  • minimumHealthyPercent 代表在部署期間或容器執行個體耗盡時,應為服務執行的任務數量下限 (佔服務所需任務數量的百分比)。此值會向上捨入。例如,如果最小運作狀態良好的百分比為 50,且所需的任務計數為 4,則排程器可以先停止兩項現有的任務,再開始兩項新的任務。同樣地,如果最小運作狀態良好的百分比為 75%,而所需的任務計數為 2,則排程器無法停止任何任務,因為產生的值也是 2。

    如果任務變得運作狀態不佳,Amazon ECS服務排程器會先啟動替換任務,並維護minimumHealthyPercent任務,直到替換任務正常運作為止。隨著替代任務啟動並變得運作狀態良好,運作狀態不佳的任務將逐漸停止。

  • maximumPercent 代表在部署期間或容器執行個體耗盡時,應為服務執行的任務數目上限 (佔服務所需任務數量的百分比)。此值會向下捨去。例如,如果最大百分比為 200,且所需的任務計數為四,則排程器可以先停止四項現有的任務,再開始四項新的任務。同樣地,如果最大百分比為 125,且所需的任務計數為 3,則排程器無法停止任何任務,因為產生的值也是 3。

重要

設定最小運作狀態良好的百分比或最大百分比時,您應確定排程器在部署初始化時,可以停止或啟動至少一項任務。如果您的服務部署因無效的部署組態而停滯,將傳送服務事件簡訊。如需詳細資訊,請參閱服務 (service-name) 由於服務部署組態,無法在部署期間停止或啟動任務。更新 minimumHealthyPercent 或 maximumPercent 值,然後再試一次。

滾動部署有 2 種方法,可讓您快速識別服務部署何時失敗:

可以單獨使用或一起使用這些方法。使用這兩種方法時,一旦符合任一失敗方法的失敗條件,部署就會設定為失敗。

請遵循下列準則來協助判斷要使用的方法:

  • 斷路器 – 當您想要在任務無法啟動而停止部署時,請使用此方法。

  • CloudWatch 警示 - 當您想要根據應用程式指標停止部署時,請使用此方法。

這兩種方法都支援轉返至先前的服務修訂。

容器映像解析度

根據預設,Amazon 會將任務定義中指定的容器映像標籤ECS解析為容器映像摘要。如果您建立執行和維護單一任務的服務,該任務會用來建立任務中容器的影像摘要。如果您建立執行和維護多個任務的服務,則服務排程器在部署期間啟動的第一個任務會用來建立任務中容器的影像摘要。

如果建立容器映像摘要的三次或三次以上嘗試失敗,則部署會繼續進行,而不需要映像摘要解析。如果啟用部署斷路器,則部署會額外失敗並復原。

建立容器映像摘要之後,Amazon ECS會使用摘要來啟動任何其他所需的任務,以及用於任何未來的服務更新。這會導致服務中的所有任務一律執行相同的容器映像,進而產生軟體的版本一致性。

您可以使用容器定義中的 versionConsistency 參數,為任務中的每個容器設定此行為。如需詳細資訊,請參閱versionConsistency

注意
  • 低於 的 Amazon ECS Agent 版本1.31.0不支援影像摘要解析度。代理程式版本僅1.31.01.69.0支援推送至 Amazon ECR儲存庫的影像的映像摘要解析度。客服人員版本1.70.0或更高版本支援所有映像的映像摘要解析度。

  • 映像摘要解析度的最低 Fargate Linux 平台版本為 1.3.0。映像摘要解析度的最低 Fargate Windows 平台版本為 1.0.0

  • Amazon ECS不會擷取由 Amazon 管理的附屬容器摘要ECS,例如 Amazon GuardDuty 安全代理程式或 Service Connect 代理。

  • 若要減少在具有多個任務的 服務中與容器映像解析相關的潛在延遲,請在EC2容器執行個體上執行 Amazon ECS代理程式版本 1.83.0或更高版本。若要避免潛在的延遲,請在任務定義中指定容器映像摘要。

  • 如果您建立任務計數為零的 服務,Amazon ECS將無法建立容器摘要,直到您觸發所需任務計數大於零的另一個服務部署。

  • 若要建立更新的映像摘要,您可以強制新部署。更新的摘要將用於啟動新任務,不會影響已執行的任務。如需強制新部署的詳細資訊,請參閱《Amazon ECSAPI參考forceNewDeployment》中的 。