Amazon 上 AWS Fargate 的任務淘汰和維護 ECS - Amazon Elastic Container Service

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

Amazon 上 AWS Fargate 的任務淘汰和維護 ECS

AWS 負責維護 AWS Fargate 的基礎基礎設施。 AWS 決定何時需要將平台版本修訂取代為基礎設施的新修訂版本。這稱為任務淘汰。在平台版本修訂淘汰時 AWS 傳送任務淘汰通知。我們會定期更新我們支援的平台版本,以引入包含 Fargate 執行期軟體和基礎相依性更新的新修訂版本,例如作業系統和容器執行期。一旦有較新的修訂版本可用,我們會淘汰較舊的修訂版本,以確保所有客戶工作負載在 Fargate 平台版本的最新修訂版本上執行。當修訂版本淘汰時,在該修訂版本上執行的所有任務都會停止。

Amazon ECS任務可以分類為服務任務或獨立任務。服務任務會部署為服務的一部分,並由 Amazon ECS排程控制。如需詳細資訊,請參閱Amazon ECS服務。獨立任務是 Amazon ECS RunTask 直接啟動的任務API,或外部排程器啟動的任務,例如排程任務 (由 Amazon 啟動 EventBridge) AWS Batch,或 AWS Step Functions。您不需要採取任何動作來回應服務任務的任務淘汰,因為 Amazon ECS排程器會自動取代任務。

對於獨立任務,您可能需要執行額外的處理以回應任務淘汰。如需詳細資訊,請參閱 Amazon 可以ECS自動處理獨立任務嗎?

對於服務任務,您不需要採取任何動作來淘汰任務,除非您想要先取代這些任務 AWS 。當 Amazon ECS排程器停止任務時,它會使用運作狀態最低百分比,並啟動新的任務,以嘗試維持服務所需的計數。為了將 AWS Fargate 任務淘汰的影響降至最低,部署工作負載時,您應該遵循 Amazon ECS最佳實務。例如,在將無狀態應用程式部署為服務時,例如 Web 或API伺服器,您應該部署多個任務複本,並將 minimumHealthyPercent 設定為 100%。根據預設,服務的最低運作狀態百分比為 100%。因此,當 AWS Fargate 開始淘汰任務時,Amazon 會ECS先排程新任務,然後等待它執行,然後再淘汰舊任務。作為任務淘汰的一部分,當您擴展服務、部署組態變更或部署任務定義修訂時,服務任務會以相同的方式定期取代。若要為任務淘汰程序做準備,建議您透過模擬此情境來測試應用程式的行為。方式如下:停止您服務中的個別任務,藉以測試復原能力。

對於獨立任務淘汰, 會在任務淘汰日期或之後 AWS 停止任務。當任務停止時,Amazon ECS不會啟動替代任務。如果您需要這些任務繼續執行,您需要在通知中指示的時間之前停止執行中的任務並啟動替換任務。因此,我們建議客戶監控獨立任務的狀態,並視需要實作邏輯以取代已停止的任務。

當任務在任何場景下停止時,您都可以執行 describe-tasks。回應中的 stoppedReasonECS is performing maintenance on the underlying infrastructure hosting the task

當有新的平台版本修訂需要取代為新的修訂時,任務維護即適用。如果基礎 Fargate 主機發生問題,Amazon 會在沒有任務淘汰通知的情況下ECS取代主機。

任務淘汰通知概觀

當 將平台版本修訂 AWS 標記為需要淘汰時,我們會識別所有區域中在該平台版本修訂上執行的所有任務。然後,我們會為每個 區域傳送每個帳戶的通知,強調受影響的任務或服務,以及開始淘汰的日期。

下圖顯示 Fargate 平台版本修訂的生命週期,從新版本啟動到平台修訂淘汰。

顯示 Fargate 任務淘汰生命週期的圖表。

以下資訊提供詳細資訊。

  • 啟動新的平台版本修訂後,所有新任務都會排程在此修訂版本上。

  • 已排程和執行的現有任務仍會保留在任務持續時間內最初放置的修訂版本上,而不會遷移至新的修訂版本。

  • 新任務,例如作為服務或 Fargate 任務淘汰更新的一部分,會放置在啟動時可用的最新平台版本修訂中。

任務淘汰通知會透過 AWS Health Dashboard 以及電子郵件傳送至已註冊的電子郵件地址,並包含下列資訊:

  • 任務淘汰日期 - 任務將在此日期或之後停止。

  • 對於獨立任務,任務IDs的 。

  • 對於服務任務,服務執行的叢集 ID 和服務的 IDs 。

  • 您需要採取的後續步驟。

一般而言,我們會針對每個 中的服務和獨立任務傳送每個通知 AWS 區域。不過,在某些情況下,您可能會收到每個任務類型的多個事件,例如,如果需要淘汰的任務太多,而這些任務將超過通知機制中的限制。

您可以透過以下方法確定已排程要淘汰的任務:

  • 的 AWS Health Dashboard

    AWS Health 通知可以透過 Amazon EventBridge 傳送至封存儲存,例如 Amazon Simple Storage Service,採取自動動作,例如執行 AWS Lambda 函數,或其他通知系統,例如 Amazon Simple Notification Service。如需詳細資訊,請參閱使用 Amazon 監控 AWS Health 事件 EventBridge。如需將通知傳送至 Amazon Chime、Slack 或 Microsoft Teams 的範例組態,請參閱 上的 AWS Health Aware 儲存庫 GitHub。

    以下是範例 EventBridge 事件。

    { "version": "0", "id": "3c268027-f43c-0171-7425-1d799EXAMPLE", "detail-type": "AWS Health Event", "source": "aws.health", "account": "123456789012", "time": "2023-08-16T23:18:51Z", "region": "us-east-1", "resources": [ "cluster|service", "cluster|service" ], "detail": { "eventArn": "arn:aws:health:us-east-1::event/ECS/AWS_ECS_TASK_PATCHING_RETIREMENT/AWS_ECS_TASK_PATCHING_RETIREMENT_test1", "service": "ECS", "eventScopeCode": "ACCOUNT_SPECIFIC", "communicationId": "7988399e2e6fb0b905ddc88e0e2de1fd17e4c9fa60349577446d95a18EXAMPLE", "lastUpdatedTime": "Wed, 16 Aug 2023 23:18:52 GMT", "eventRegion": "us-east-1", "eventTypeCode": "AWS_ECS_TASK_PATCHING_RETIREMENT", "eventTypeCategory": "scheduledChange", "startTime": "Wed, 16 Aug 2023 23:18:51 GMT", "endTime": "Fri, 18 Aug 2023 23:18:51 GMT", "eventDescription": [ { "language": "en_US", "latestDescription": "\\nA software update has been deployed to Fargate which includes CVE patches or other critical patches. No action is required on your part. All new tasks launched automatically uses the latest software version. For existing tasks, your tasks need to be restarted in order for these updates to apply. Your tasks running as part of the following ECS Services will be automatically updated beginning Wed, 16 Aug 2023 23:18:51 GMT.\\n\\nAfter Wed, 16 Aug 2023 23:18:51 GMT, the ECS scheduler will gradually replace these tasks, respecting the deployment settings for your service. Typically, services should see little to no interruption during the update and no action is required. When AWS stops tasks, AWS uses the minimum healthy percent (1) and launches a new task in an attempt to maintain the desired count for the service. By default, the minimum healthy percent of a service is 100 percent, so a new task is started first before a task is stopped. Service tasks are routinely replaced in the same way when you scale the service or deploy configuration changes or deploy task definition revisions. If you would like to control the timing of this restart you can update the service before Wed, 16 Aug 2023 23:18:51 GMT, by running the update-service command from the ECS command-line interface specifying force-new-deployment for services using Rolling update deployment type. For example:\\n\\n$ aws ecs update-service -service service_name \\\n--cluster cluster_name -force-new-deployment\\n\\nFor services using Blue/Green deployment type with AWS CodeDeploy:\\nPlease refer to create-deployment document (2) and create new deployment using same task definition revision.\\n\\nFor further details on ECS deployment types, please refer to ECS Deployment Developer Guide (1).\\nFor further details on Fargate's update process, please refer to the AWS Fargate User Guide (3).\\nIf you have any questions or concerns, please contact AWS Support (4).\\n\\n(1) https://docs.aws.amazon.com/AmazonECS/latest/developerguide/deployment-types.html\\n(2) https://docs.aws.amazon.com/cli/latest/reference/deploy/create-deployment.html\\n(3) https://docs.aws.amazon.com/AmazonECS/latest/userguide/task-maintenance.html\\n(4) https://aws.amazon.com/support\\n\\nA list of your affected resources(s) can be found in the 'Affected resources' tab in the 'Cluster/ Service' format in the AWS Health Dashboard. \\n\\n" } ], "affectedEntities": [ { "entityValue": "cluster|service" }, { "entityValue": "cluster|service" } ] } }
  • 電子郵件

    系統會將電子郵件傳送至 AWS 帳戶 ID 的註冊電子郵件。

如需有關如何準備任務淘汰的資訊,請參閱 準備在 Amazon 上淘汰 AWS Fargate 任務 ECS

我可以選擇退出任務淘汰嗎?

否。作為 AWS 共同責任模型的一部分, AWS 負責管理和維護 的基礎基礎設施 AWS Fargate。這包括執行定期平台更新,以確保安全性和穩定性。這些更新由 自動套用 AWS ,而且不是客戶可以選擇退出的項目。與在EC2執行個體上執行工作負載 AWS Fargate 相比,這是使用 的主要優點,維護基礎平台的責任由 負責 AWS。此模型可讓您專注於應用程式,而不是基礎設施維護。透過自動套用這些平台更新, AWS 能夠保護 Fargate 環境 up-to-date和安全,而無需您作為客戶採取任何動作。這有助於提供可靠且安全的容器化環境,以便在 Fargate 上執行工作負載。

我可以透過其他服務取得任務淘汰通知 AWS 嗎?

AWS 會將任務淘汰通知傳送至 上的 AWS Health Dashboard 和 主要電子郵件聯絡人 AWS 帳戶。 AWS Health Dashboard 提供許多與其他 AWS 服務的整合,包括 EventBridge。您可以使用 EventBridge 來自動化通知的可見性 (例如,將訊息轉送至 ChatOps 工具)。如需詳細資訊,請參閱解決方案概觀:擷取任務淘汰通知

我可以在任務排程後變更任務淘汰嗎?

否。排程是根據預設為 7 天的任務淘汰等待時間。如果您需要更多時間,可以選擇將等待期設定為 14 天。如需詳細資訊,請參閱步驟 2:擷取任務淘汰通知以提醒團隊並採取行動。此組態的變更會套用至未來排程的淘汰。目前排程的淘汰不會受到影響。如果您有任何其他疑慮,請聯絡 AWS Support。

Amazon 如何處理屬於服務一部分ECS的任務?

對於服務任務,您不需要採取任何動作來回應任務淘汰,除非您想要先取代這些任務 AWS 。當 Amazon ECS排程器停止任務時,它會使用最低運作狀態百分比,並啟動新的任務,以嘗試維持服務所需的計數。為了將 Fargate 任務淘汰的影響降至最低,工作負載應按照 Amazon ECS最佳實務進行部署。例如,將無狀態應用程式部署為 Amazon ECS服務時,例如 Web 或API伺服器,客戶應部署多個任務複本,並將 minimumHealthyPercent 設定為 100%。根據預設,服務的最低運作狀態百分比為 100%。因此,當 Fargate 開始淘汰任務時,Amazon 會ECS先排程新任務,並等待它執行,然後再淘汰舊任務。當您擴展服務、部署組態變更或部署任務定義修訂時,服務任務會定期取代為任務淘汰的一部分。若要準備任務淘汰程序,請參閱 準備在 Amazon 上淘汰 AWS Fargate 任務 ECS

Amazon 可以ECS自動處理獨立任務嗎?

否。 AWS 無法為由 RunTask、排程任務 (例如透過 EventBridge Scheduler) AWS Batch或 啟動的獨立任務建立替代任務 AWS Step Functions。Amazon 只會ECS管理屬於 服務一部分的任務。