本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon ECS 上 AWS Fargate 的任務淘汰和維護
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 排程器會在停止任務時使用 maximumPercent 並啟動新任務,嘗試維持服務的預期執行數量。遵循最佳實務,盡力降低任務淘汰傳送的影響。使用 REPLICA 服務排程器的服務,其預設 maximumPercent 值為 200%。因此,當 AWS Fargate 開始淘汰任務時,Amazon ECS 會先排程新任務,然後等待它執行,然後再淘汰舊任務。在將 maximumPercent 值設定為 100% 後,Amazon ECS 會先停止任務,再取代任務。
對於獨立任務淘汰, 會在任務淘汰日期當天或之後 AWS 停止任務。Amazon ECS 不會在任務停止時啟動替代任務。若需讓這些任務持續執行,您必須在通知指定的時間前,停止執行中任務並啟動替代任務。因此,我們建議客戶監控獨立任務的狀態,並視需要實作邏輯以取代已停止的任務。
當任務在任何場景下停止時,您都可以執行 describe-tasks。回應中的 stoppedReason 是 ECS is performing maintenance on the
underlying infrastructure hosting the task。
如需將新的平台版本修訂版取代為新的修訂版,即會套用任務維護機制。如果底層 Fargate 主機發生問題,Amazon ECS 會在沒有任務淘汰通知的情況下取代主機。
任務淘汰通知概觀
當 將平台版本修訂 AWS 標記為需要淘汰時,我們會識別所有區域中在該平台版本修訂上執行的所有任務。然後,我們會針對每個區域的每個帳戶傳送一則通知,並反白顯示受影響的任務或服務,以及開始淘汰的日期。
下圖呈現了 Fargate 平台版本修訂版的生命週期,涵蓋從新修訂版發布到平台修訂版淘汰的全過程。
下面提供相關詳細資訊。
-
新平台版本修訂版發布後,所有新任務都將排程至此修訂版上執行。
-
已排程和執行中的現有任務,皆會保留在最初於任務期間置放的修訂版上,而不會遷移至新的修訂版。
-
新任務,例如作為服務或 Fargate 任務淘汰更新的組成部分,皆會置放在啟動時可用的最新平台版本修訂版上。
任務淘汰通知會透過 AWS Health Dashboard 以及透過電子郵件傳送至已註冊的電子郵件地址,並包含下列資訊:
-
任務淘汰日期 - 任務將在此日期或之後停止。
-
若為獨立任務,則為任務的 ID。
-
若為服務任務,則為執行服務所在之叢集的 ID 以及服務的 ID。
-
您需要採取的後續步驟。
通常,我們會針對每個 AWS 區域中的每項服務與獨立任務傳送一則通知。然而在某些情況下,您可能會針對每種任務類型收到多則事件通知,例如當待淘汰任務數量過多,超出我們通知機制的承載上限時。
您可以透過以下方法確定已排程要淘汰的任務:
-
的 AWS Health Dashboard
AWS Health 通知可透過 Amazon EventBridge 傳送至封存儲存,例如 Amazon Simple Storage Service、執行 AWS Lambda 函數等自動動作,或其他通知系統,例如 Amazon Simple Notification Service。如需詳細資訊,請參閱使用 Amazon EventBridge 監控 AWS Health 事件。如需將通知傳送至 Amazon Chime、Slack 或 Microsoft Teams 的組態範例,請參閱 GitHub 上的 AWS Health Aware
儲存庫。 以下是 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": "arn:aws:ecs:eu-west-1:111222333444:task/examplecluster/00805ce1d81940b5a37398e5a2c23333" }, { "entityValue": "arn:aws:ecs:eu-west-1:111222333444:task/examplecluster/00805ce1d81940b5a37398e5a2c25555" } } ] } } -
Email
系統會將電子郵件傳送至 AWS 帳戶 ID 的註冊電子郵件。
如需有關如何為任務淘汰做準備的資訊,請參閱準備在 Amazon ECS 上淘汰 AWS Fargate 任務 。
我可以選擇退出任務淘汰機制嗎?
否。作為 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 工具)。如需詳細資訊,請參閱 Solution overview: Capturing task retirement notifications
我可以在任務排定後變更任務淘汰嗎?
不可以。排程是根據任務淘汰等待時間而定,預設值為 7 天。如果需要更多時間,可選擇將等待期間設定為 14 天。如需詳細資訊,請參閱步驟 2:擷取任務淘汰通知,提醒團隊採取動作。此組態變更適用於後續排程的淘汰任務。目前已排定的淘汰不會受到影響。如果您有任何其他疑慮,請聯絡 支援。
Amazon ECS 如何處理屬於服務組成部分的任務?
對於服務任務,您不需要採取任何動作來回應任務淘汰,除非您想要在 AWS 之前取代這些任務。Amazon ECS 排程器會在停止任務時依據運作狀態百分比下限啟動新任務,嘗試維持服務的預期執行數量。為盡力降低 Fargate 任務淘汰產生的影響,工作負載應按照 Amazon ECS 最佳實務進行部署。例如,將無狀態應用程式部署為 Amazon ECS 服務 (例如 Web 或 API 伺服器) 時,客戶應部署多個任務副本,並將 minimumHealthyPercent 設定為 100%。依預設,服務的運作狀態百分比下限為 100%。因此,當 Fargate 開始淘汰任務時,Amazon ECS 會先排程新任務,待其進入執行狀態後,再淘汰舊任務。當您擴展服務規模、部署組態變更或部署任務定義修訂版時,在任務淘汰過程中,系統會以相同的方式定期取代服務任務。若要為任務淘汰程序做準備,請參閱準備在 Amazon ECS 上淘汰 AWS Fargate 任務 。
Amazon ECS 是否可以自動處理獨立任務?
No. AWS 無法為由 RunTask、排程任務 (例如透過 EventBridge 排程器) AWS Batch或 啟動的獨立任務建立替代任務 AWS Step Functions。Amazon ECS 僅管理屬於服務組成部分的任務。
對任務淘汰期間的服務可用性進行疑難排解
如果 Amazon ECS 在任務淘汰期間無法啟動替代任務,服務可用性可能會受到影響。此情況可能由錯誤的客戶設定引發,例如:
-
IAM 角色遺失或設定不正確
-
目標子網路中的容量不足
-
安全群組設定錯誤
-
任務定義錯誤
當 Amazon ECS 無法啟動替代任務時,淘汰任務將在無替換的情況下停止,導致服務可用容量降低,甚至中斷服務。請監控服務的任務數量與 Amazon CloudWatch 指標,確保在淘汰事件期間,替代任務能順利啟動。