本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon ECS 服務事件訊息
您會在 Amazon ECS 主控台中看到以下服務事件訊息範例:
服務 (service-name
) 已達到穩定狀態。
服務排程器會在service (
服務運作狀態良好且達到所需任務數量時傳送服務事件,進而達到穩定狀態。service-name
) has reached a steady state.
服務排程器會定期報告狀態,因此您可能會多次收到此訊息。
服務 (service-name
) 無法放置任務,因為沒有容器執行個體符合其所有要求。
當找不到可新增其他任務的可用資源時,服務排程器會傳送此事件訊息。可能的原因如下:
- 使用容量提供者自動擴展您的 EC2 執行個體。如需詳細資訊,請參閱EC2 啟動類型的 Amazon ECS 容量提供者 。
如果您打算使用容量提供者,請確定您已傳遞容量提供者策略,或具有與叢集相關聯的預設容量提供者策略,且未傳遞啟動類型和容量提供者策略做為輸入
- 您的叢集中找不到任何容器執行個體
-
如果您嘗試執行任務的叢集中沒有註冊容器執行個體,您會收到此錯誤。您應該將容器執行個體新增到您的叢集。如需詳細資訊,請參閱啟動 Amazon ECS Linux 容器執行個體。
- 連接埠不足
-
如果您的任務使用固定的主機連接埠映射 (例如,您的任務為 Web 伺服器使用主機的連接埠 80),則您每項任務至少必須擁有一個容器執行個體,因為一個容器一次只能使用單一個主機連接埠。您應該新增容器執行個體到您的叢集,或降低所需任務數量。
- 註冊的連接埠太多
-
任務置放最接近相符的容器執行個體,不得超過每個容器執行個體允許的預留連接埠上限 100 個主機連接埠。使用動態主機連接埠映射可以修復此問題。
- 連接埠已在使用中
-
此任務的任務定義會在其連接埠映射中使用相同的連接埠,做為已在所選容器執行個體上執行的任務。服務事件訊息會將具有所選容器執行個體 ID 作為以下訊息的一部分。
The closest matching container-instance is already using a port required by your task.
- 記憶體不足
-
如果您的任務定義指定 1000 MiB 的記憶體,而您叢集中的容器執行個體每個都有 1024 MiB 的記憶體,則您每個容器執行個體只能執行一個此任務複本。您可以在任務定義中試驗使用較少的記憶體,以便您每個容器執行個體可以啟動多項任務,或在您的叢集中啟動更多的容器執行個體。
注意
若您嘗試盡可能為特定執行個體類型的任務提供最多的記憶體,以將資源使用率最大化,請參閱「保留 Amazon ECS Linux 容器執行個體記憶體」。
- CPU 不足
-
容器執行個體的每個 CPU 核心都有 1,024 CPU 單位。如果您的任務定義指定 1,000 CPU 單位,而您叢集中的容器執行個體每個都有 1,024 CPU 單位,您每個容器執行個體只能執行一個此任務複本。您可以在任務定義中試驗使用較少的 CPU 單位,以便您每個容器執行個體可以啟動多項任務,或在您的叢集中啟動更多的容器執行個體。
- 可用的 ENI 連接點不足
-
使用
awsvpc
網路模式的每項任務都會收到自己的彈性網路介面 (ENI),連接到裝載它的容器執行個體。Amazon EC2 執行個體有可以連接至其的 ENI 數目限制,而且有 ENI 容量可用的叢集中沒有容器執行個體。個別容器執行個體的 ENI 限制取決於以下條件:
-
如果您尚未選擇使用
awsvpcTrunking
帳戶設定,則每個容器執行個體的 ENI 限制取決於執行個體類型。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的每個執行個體類型每個網路介面的 IP 地址。 -
如果您已選擇加入
awsvpcTrunking
帳戶設定,但在選擇加入後尚未使用支援的執行個體類型啟動新的容器執行個體,則每個容器執行個體的 ENI 限制仍為預設值。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的每個執行個體類型每個網路介面的 IP 地址。 -
如果您已選擇使用
awsvpcTrunking
帳戶設定,且已在選擇使用後,使用支援的執行個體類型啟動新的容器執行個體,則會有額外的 ENI 可用。如需詳細資訊,請參閱支援增加 Amazon ECS 容器網路介面的執行個體。
如需選擇使用的
awsvpcTrunking
帳戶設定詳細資訊,請參閱 增加 Amazon ECS Linux 容器執行個體網路介面。您可以將容器執行個體新增到您的叢集,以提供更多可用的網路轉接器。
-
- 容器執行個體遺漏必要的屬性
-
有些任務定義參數需要在容器執行個體上安裝特定的 Docker 遠端 API 版本。其他,例如記錄驅動程式選項,需要容器執行個體向
ECS_AVAILABLE_LOGGING_DRIVERS
代理組態變數註冊這些日誌驅動程式。如果您的任務定義包含需要特定容器執行個體屬性的參數,而且您沒有任何可滿足此需求的可用容器執行個體,則無法放置任務。如果您的服務使用使用
awsvpc
網路模式和 EC2 啟動類型的任務,則此錯誤的常見原因。您指定的叢集沒有在建立服務awsvpcConfiguration
時在 中指定的相同子網路中註冊的容器執行個體。您可以使用 AWSSupport-TroubleshootECSContainerInstance Runbook 進行故障診斷。Runbook 會檢閱執行個體的使用者資料是否包含正確的叢集資訊、執行個體描述檔是否包含必要的許可,以及網路組態問題。如需詳細資訊,請參閱《AWS Systems Manager Automation Runbook 參考使用者指南》中的 AWSSupport-TroubleshootECSContainerInstance。
有關特定任務定義參數和代理組態變數需要哪些必要屬性的詳細資訊,請參閱「Fargate 啟動類型的 Amazon ECS 任務定義參數」和「Amazon ECS 容器代理程式組態」。
服務 (service-name
) 無法放置任務,因為沒有容器執行個體符合其所有要求。最接近的相符容器執行個體 (容器執行個體 id
) 可用 CPU 單位不足。
與任務置放最接近相符的容器執行個體不包含足夠的 CPU 單位,以滿足任務定義中的要求。檢閱任務定義之任務大小和容器定義參數的 CPU 需求。
服務 (service-name
) 無法放置任務,因為沒有容器執行個體符合其所有要求。最接近的相符容器執行個體 container-instance-id
發生「代理」錯誤。
適合放置任務之最接近相符容器執行個體中的 Amazon ECS 容器代理中斷連線。如果您可以使用 SSH 連線到容器執行個體,您即可檢查代理日誌,如需詳細資訊,請參閱「Amazon ECS 容器代理程式日誌組態參數」。您也應該確認代理是否在執行個體上執行。如果您使用的是 Amazon ECS 最佳化 AMI,您可以使用下列命令嘗試停用並重新啟動代理。
-
對於 Amazon ECS 最佳化 Amazon Linux 2 AMI 和 Amazon ECS 最佳化 Amazon Linux 2023 AMI
sudo systemctl restart ecs
-
對於 Amazon ECS 最佳化 Amazon Linux AMI
sudo stop ecs && sudo start ecs
服務 (service-name
) (執行個體 instance-id
) 在 (elb elb-name
) 中運作狀態不良,是因為 (執行個體失敗的原因是幾乎沒有連續的運作狀態檢查 UnhealthyThreshold 數。)
此服務已在負載平衡器註冊,但負載平衡器的運作狀態檢查失敗。如需詳細資訊,請參閱對 Amazon ECS 中的服務負載平衡器進行故障診斷。
服務 (service-name
) 無法成功持續啟動任務。
此服務包含在連續嘗試後無法啟動的任務。此時,服務排程器開始逐漸增加重試之間的時間。您應該對任務無法啟動的原因進行故障診斷。如需詳細資訊,請參閱Amazon ECS 服務調節邏輯。
服務更新之後,例如使用更新的任務定義,服務排程器就會恢復正常的行為。
服務 (service-name
) 操作正在受到調節。將稍後再試。
由於 API 調節限制,此服務無法啟動更多任務。一旦服務排程器能夠啟動更多任務,就會繼續執行。
若要請求提高 API 比率限制配額,請開啟 AWS 支援 Center
服務 (service-name
) 在部署期間因服務部署組態而無法停止或啟動任務。更新 minimumHealthyPercent 或 maximumPercent 值,然後再試一次。
由於部署組態,此服務無法在服務部署期間停止或啟動任務。部署組態包含 minimumHealthyPercent
和 maximumPercent
值,這些值會在建立服務時定義。這些值也可以在現有服務上更新。
minimumHealthyPercent
代表部署期間或容器執行個體耗盡時,應為服務執行的任務數量下限。這是服務所需任務數量的百分比。此值會向上捨入。例如,如果運作狀態百分比下限為 ,50
且所需的任務計數為 4,則排程器可以在啟動兩個新任務之前停止兩個現有任務。同樣地,如果最小運作狀態良好的百分比為 75%,而所需的任務計數為 2,則排程器無法停止任何任務,因為產生的值也是 2。
maximumPercent
代表部署期間或容器執行個體耗盡時應為服務執行的任務數量上限。這是服務所需任務數量的百分比。此值會向下捨去。例如,如果最大百分比為 ,200
而所需的任務計數為 4,則排程器可以在停止四個現有任務之前啟動四個新任務。同樣地,如果最大百分比為 125
,且所需的任務計數為 3,則排程器無法停止任何任務,因為產生的值也是 3。
設定最小最小運作狀態良好的百分比或最大百分比時,您應確定排程器在觸發部署時,至少可以停止或啟動一項任務。
服務 (service-name
) 無法放置任務。原因:您已達到可以同時執行的任務數量限制
您可以請求提升導致錯誤的資源配額。如需詳細資訊,請參閱Amazon ECS 服務配額。若要請求增加配額,請參閱《Service Quotas 使用者指南》中的請求提高配額。
服務 (service-name
) 無法放置任務。原因:內部錯誤。
以下是此錯誤的可能原因:
由於子網路位於不受支持的可用區域中,該服務無法開始任務。
如需支援的區域的 Fargate 和可用區域的相關資訊,請參閱 支援 AWS Fargate 上 Amazon ECS 的區域。
如需如何檢視子網路可用區域的相關資訊,請參閱《Amazon VPC 使用者指南》中的檢視您的子網路。
服務 (service-name
) 無法放置任務。原因:請求的 CPU 組態超過您的限制。
您可以請求提升導致錯誤的資源配額。如需詳細資訊,請參閱Amazon ECS 服務配額。若要請求增加配額,請參閱《Service Quotas 使用者指南》中的請求提高配額。
服務 (service-name
) 無法放置任務。原因:請求的 MEMORY 組態超過您的限制。
您可以請求提升導致錯誤的資源配額。如需詳細資訊,請參閱Amazon ECS 服務配額。若要請求增加配額,請參閱《Service Quotas 使用者指南》中的請求提高配額。
服務 (service-name
) 無法放置任務。原因:您已達到可以同時執行的 vCPU 數量限制
AWS Fargate 正在從任務計數型配額轉換為 vCPU 型配額。
對於 Fargate vCPU 型配額,您可請求提高配額。如需詳細資訊,請參閱Amazon ECS 服務配額。若要請求提高 Fargate 配額,請參閱《Service Quotas 使用者指南》中的請求提高配額。
服務 (service-name
) 無法達到穩定狀態,因為任務集 (taskSet-ID
) 無法縮減。原因:受保護任務的數量超過所需的任務計數
服務具有比所需任務數量更多的受保護任務。您可以執行下列任一動作:
-
等待目前任務的保護到期,然後終止這些任務。
-
決定可以停止哪些任務,並使用
UpdateTaskProtection
API,並將protectionEnabled
選項設定為false
以取消設定這些任務的保護。 -
將服務的所需任務計數提高到超過受保護任務的數目。
服務 (service-name
) 無法達到穩定狀態。原因:在容量提供者中找不到容器執行個體。
當找不到可新增其他任務的可用資源時,服務排程器會傳送此事件訊息。可能的原因如下:
- 沒有與叢集相關聯的容量提供者
-
使用
describe-services
來驗證您是否擁有與叢集相關聯的容量提供者 您可以更新服務的容量提供者策略。確認容量提供者中有可用的容量,在 EC2 啟動類型的情況下,請確定容器執行個體符合任務定義要求。
- 您的叢集中找不到任何容器執行個體
-
如果您嘗試執行任務的叢集中沒有註冊容器執行個體,您會收到此錯誤。您應該將容器執行個體新增到您的叢集。如需詳細資訊,請參閱啟動 Amazon ECS Linux 容器執行個體。
- 連接埠不足
-
如果您的任務使用固定主機連接埠映射 (例如,您的任務在 Web 伺服器主機上使用連接埠 80),則每個任務必須至少有一個容器執行個體。一次只能有一個容器使用單一主機連接埠。您應該新增容器執行個體到您的叢集,或降低所需任務數量。
- 註冊的連接埠太多
-
任務置放最接近相符的容器執行個體,不得超過每個容器執行個體允許的預留連接埠上限 100 個主機連接埠。使用動態主機連接埠映射可以修復此問題。
- 連接埠已在使用中
-
此任務的任務定義會在其連接埠映射中使用相同的連接埠,做為已在所選容器執行個體上執行的任務。服務事件訊息會將具有所選容器執行個體 ID 作為以下訊息的一部分。
The closest matching container-instance is already using a port required by your task.
- 記憶體不足
-
如果您的任務定義指定 1000 MiB 的記憶體,而您叢集中的容器執行個體每個都有 1024 MiB 的記憶體,則您每個容器執行個體只能執行一個此任務複本。您可以在任務定義中試驗使用較少的記憶體,以便您每個容器執行個體可以啟動多項任務,或在您的叢集中啟動更多的容器執行個體。
注意
若您嘗試盡可能為特定執行個體類型的任務提供最多的記憶體,以將資源使用率最大化,請參閱「保留 Amazon ECS Linux 容器執行個體記憶體」。
- 可用的 ENI 連接點不足
-
使用
awsvpc
網路模式的每項任務都會收到自己的彈性網路介面 (ENI),連接到裝載它的容器執行個體。Amazon EC2 執行個體有可連接的 ENIs 數量限制,而且叢集中沒有可用 ENI 容量的容器執行個體。個別容器執行個體的 ENI 限制取決於以下條件:
-
如果您尚未選擇使用
awsvpcTrunking
帳戶設定,則每個容器執行個體的 ENI 限制取決於執行個體類型。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的每個執行個體類型每個網路介面的 IP 地址。 -
如果您已選擇加入
awsvpcTrunking
帳戶設定,但在選擇加入後尚未使用支援的執行個體類型啟動新的容器執行個體,則每個容器執行個體的 ENI 限制仍為預設值。如需詳細資訊,請參閱《Amazon EC2 使用者指南》中的每個執行個體類型每個網路介面的 IP 地址。 -
如果您已選擇使用
awsvpcTrunking
帳戶設定,且已在選擇使用後,使用支援的執行個體類型啟動新的容器執行個體,則會有額外的 ENI 可用。如需詳細資訊,請參閱支援增加 Amazon ECS 容器網路介面的執行個體。
如需選擇使用的
awsvpcTrunking
帳戶設定詳細資訊,請參閱 增加 Amazon ECS Linux 容器執行個體網路介面。您可以將容器執行個體新增到您的叢集,以提供更多可用的網路轉接器。
-
- 容器執行個體遺漏必要的屬性
-
有些任務定義參數需要在容器執行個體上安裝特定的 Docker 遠端 API 版本。其他,例如記錄驅動程式選項,需要容器執行個體向
ECS_AVAILABLE_LOGGING_DRIVERS
代理組態變數註冊這些日誌驅動程式。如果您的任務定義包含需要特定容器執行個體屬性的參數,而且您沒有任何可滿足此需求的可用容器執行個體,則無法放置任務。此錯誤的常見原因是,如果您的服務使用使用
awsvpc
網路模式和 EC2 啟動類型的任務,且您指定的叢集沒有在建立服務awsvpcConfiguration
時在 中指定的相同子網路中註冊容器執行個體。您可以使用 AWSSupport-TroubleshootECSContainerInstance Runbook 進行故障診斷。Runbook 會檢閱執行個體的使用者資料是否包含正確的叢集資訊、執行個體描述檔是否包含必要的許可,以及網路組態問題。如需詳細資訊,請參閱《AWS Systems Manager Automation Runbook 參考使用者指南》中的 AWSSupport-TroubleshootECSContainerInstance。
有關特定任務定義參數和代理組態變數需要哪些必要屬性的詳細資訊,請參閱「Fargate 啟動類型的 Amazon ECS 任務定義參數」和「Amazon ECS 容器代理程式組態」。
服務 (service-name
) 無法放置任務。原因:目前無法使用容量。請稍後再試一次,或在不同的可用區域中嘗試。
目前沒有可用的容量可用來執行您的服務。
您可以執行下列任一動作:
-
等到 Fargate 容量或 EC2 容器執行個體可以使用。
-
重新啟動服務並指定其他子網路。
服務 (service-name
) 部署失敗:任務無法啟動。
服務中的任務無法啟動。
如需如何偵錯已停止任務的資訊,請參閱 Amazon ECS 已停止任務錯誤訊息。
service (service-name
) 等待 Amazon ECS 代理程式啟動逾時。請檢查位於 /var/log/ecs/ecs-agent.log 的日誌。
適合放置任務之最接近相符容器執行個體中的 Amazon ECS 容器代理中斷連線。如果您可以使用 SSH 連線到容器執行個體,您可以檢查代理程式日誌。如需詳細資訊,請參閱Amazon ECS 容器代理程式日誌組態參數。您也應該確認代理是否在執行個體上執行。如果您使用的是 Amazon ECS 最佳化 AMI,您可以使用下列命令嘗試停用並重新啟動代理。
-
對於 Amazon ECS 最佳化 Amazon Linux 2 AMI
sudo systemctl restart ecs
-
對於 Amazon ECS 最佳化 Amazon Linux AMI
sudo stop ecs && sudo start ecs
由於 ,service (service-name
) 任務集 (taskSet-ID
) 在 target-group (targetGroup-ARN)
中運作不良TARGET GROUP IS NOT FOUND
。
服務的任務集運作狀態檢查失敗,因為找不到目標群組。您應該刪除並重新建立服務。除非已刪除對應的 Amazon ECS 服務,否則請勿刪除任何 Elastic Load Balancing 目標群組。
由於 ,service (service-name
) 任務集 (taskSet-ID
) 在 target-group (targetGroup-ARN)
中運作狀態不佳TARGET IS NOT FOUND
。
服務的任務集運作狀態檢查失敗,因為找不到目標。