跳至內容

如何解決 Amazon ECS 中的 "no container instance met all of its requirements" 錯誤?

2 分的閱讀內容
0

我想在 Amazon Elastic Container Service (Amazon ECS) 中部署任務,但我收到以下錯誤:"[AWS service] was unable to place a task because no container instance met all of its requirements"。

解決方法

注意: 如果您在執行 AWS Command Line Interface (AWS CLI) 命令時收到錯誤訊息,請參閱 Troubleshooting errors for the AWS CLI (對 AWS CLI 錯誤進行疑難排解)。此外,請務必使用最新版 AWS CLI。

如果您的容器執行個體遺失一個需求,則 Amazon ECS 無法部署任務。若要解決沒有容器執行個體符合其所有需求的錯誤,請檢查錯誤詳細資訊,然後完成相關的疑難排解步驟。

錯誤詳細資料: 叢集中沒有註冊的容器執行個體

當您的叢集中沒有容器執行個體時,就會發生此問題。若要解決此問題,新增容器執行個體至叢集。此外,請確認您的容器執行個體不會無法註冊至 Amazon ECS 叢集。

錯誤詳細資料: 最佳配對的容器執行個體發生錯誤 "AGENT"

當在指定任務放置的容器執行個體上執行的 Amazon ECS 容器代理程式中斷連線時,您會收到此錯誤。若要解決此錯誤,請參閱如何解決 Amazon ECS 中,我的服務出現的 "the closest matching container-instance container-instance-id encountered error 'AGENT'" 錯誤?

錯誤詳細資料: 最佳配對容器執行個體已使用任務所需的連接埠

當容器執行個體所需的連接埠已在執行個體中使用時,會收到此錯誤,因為您無法在同一個連接埠上執行多個任務。若要解決此問題,請將更多執行個體容器新增至叢集。或者,若要允許任務使用容器執行個體上的任何可用連接埠,請使用動態連接埠對應。

錯誤詳細資料: 最佳配對的容器執行個體沒有足夠的可用記憶體、CPU 或 GPU 單位

如果您收到 insufficient memory、insufficient GPU 或 insufficient CPU 的錯誤,請檢查每個任務和容器執行個體使用的資源。若要解決此問題,請完成下列步驟:

如需 insufficient CPU 的更多資訊,請參閱如何解決 Amazon ECS 中的 "the closest matching container-instance container-instance-id has insufficient CPU units available" 錯誤?

若要根據資源需求自動擴展您的 EC2 執行個體,請對已啟用受管擴展的 EC2 工作負載使用 Amazon ECS 容量提供者。容量提供者會自動調整 Auto Scaling 群組中的 EC2 執行個體數量,以符合您任務的資源需求。如需更多資訊,請參閱 Amazon ECS capacity providers for EC2 workloads (適用於 EC2 工作負載的 Amazon ECS 容量提供者) 與 Automatically manage Amazon ECS capacity with cluster auto scaling (透過叢集自動擴展功能自動管理 Amazon ECS 容量)。

錯誤詳細資料: 無法放置任務資源 eni 或執行個體網路介面已超出限制

如果容器執行個體沒有可用的彈性網路介面連接點,請減少任務和任務複本的數量。或者,將更多容器執行個體新增至您的叢集。如果問題仍然存在,請使用 awsvpcTrunking 來增加 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上的彈性網路介面密度。

錯誤詳細資料: 最佳配對的容器執行個體遺失任務所需的屬性

當您的任務定義包含需要容器執行個體中遺失的容器執行個體屬性參數時,您會收到此錯誤。

若要檢查在容器執行個體上註冊的屬性,請執行 describe-container-instances AWS CLI 命令:

aws ecs describe-container-instances \
    --cluster CLUSTER-NAME \
    --container-instances CONTAINER-INSTANCE-ID \
    --region REGION

注意: 請將 CLUSTER_NAME 替換為您的叢集名稱、將 CONTAINER-INSTANCE-ID 替換為您的容器執行個體 ID 或 ARN,並將 REGION 替換為您的 AWS 區域。

檢視輸出中的 attributes 陣列,並將其與您的任務定義所需的屬性進行比較。任務定義中有列出但容器執行個體輸出中缺乏的任何屬性,皆為缺少的屬性。

您可以將 Amazon ECS 服務設定為在與容器執行個體的子網路不同的子網路上執行。在這種情況下,即使任務因為缺少屬性錯誤而失敗,attributes 輸出也不會顯示缺少的屬性。您的服務和容器執行個體的子網路相符。若要解決此問題,請在容器執行個體所在的子網路中重新建立 Amazon ECS 服務。

注意: 某些任務定義參數需要容器執行個體上有特定的 Docker 遠端 API 版本。其他參數 (例如日誌驅動程式選項) 則需要容器執行個體使用 ECS_AVAILABLE_LOGGING_DRIVERS 代理程式組態變數向那些日誌驅動程式進行註冊。如需更多資訊,請參閱 Amazon ECS task definition parameters (Amazon ECS 任務定義參數) 與 Amazon ECS container agent configuration (Amazon ECS 容器代理程式組態)。

如果為您的任務啟用了 Amazon ECS Exec,則容器執行個體可能缺少 ecs.capability.execute-command 屬性。預設情況下,經 ECS 最佳化的 Amazon Machine Image (AMI) 存在此屬性,但可能不在自訂 AMI 中。若要解決此問題,請完成下列其中一個動作:

錯誤詳細資料: 無法滿足 ABCDXYZ 放置限制

如果您使用放置限制將工作放置在特定執行個體,請確認容器執行個體支援所選的屬性或限制。

例如,針對 distinctinstance,Amazon ECS 將每個作用中任務放置在不同的容器執行個體上。如果有 5 個任務和 3 個容器執行個體可用,則任務放置會失敗,並且您會收到無法滿足限制的錯誤。若要解決 distinctInstance 的問題,請將更多容器執行個體新增至叢集。

相關資訊

Amazon ECS troubleshooting (Amazon ECS 疑難排解)

Create an ECS service (建立 ECS 服務)

Viewing Amazon ECS service event messages (檢視 Amazon ECS 服務事件訊息)

Amazon ECS service event messages (Amazon ECS 服務事件訊息)

AWS 官方已更新 7 個月前