跳至内容

如何解决 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 服务] 无法下达任务,因为没有容器实例满足其所有要求。)

解决方案

**注意:**如果您在运行 AWS 命令行界面 (AWS CLI) 命令时收到错误,请参阅 AWS CLI 错误故障排除。此外,请确保您使用的是最新版本的 AWS CLI

如果您的容器实例缺少要求,则 Amazon ECS 无法部署任务。要解决 no container instance met all of its requirements(没有容器实例满足其所有要求)错误,请检查错误详细信息,然后完成相关的故障排除步骤。

错误详细信息: 集群中没有注册的容器实例

当您的集群中没有容器实例时,就会出现此问题。要解决此问题,请向您的集群添加容器实例。此外,请确保您的容器实例并非无法注册到 Amazon ECS 集群

错误详细信息: 匹配最接近的容器实例遇到错误“AGENT”

当在指定用于下达任务的容器实例上运行的 Amazon ECS 容器代理断开连接时,您会收到此错误。要解决此错误,请参阅如何解决 Amazon ECS 中我的服务的错误“the closest matching container-instance container-instance-id encountered error 'AGENT'”(匹配最接近的容器实例 container-instance-id 遇到错误“AGENT”)?

错误详细信息: 匹配最接近的容器实例已在使用任务所需的端口

当容器实例所需的端口已在实例中使用时,您会收到此错误。您不能在同一个端口上运行多个任务。要解决此问题,请向您的集群添加更多实例容器。或者,要允许您的任务使用容器实例上的任何可用端口,请使用动态端口映射

错误详细信息: 匹配最接近的容器实例的可用内存、CPU 或 GPU 单元不足

如果您收到错误 insufficient memory(内存不足)、insufficient GPU(GPU 不足)或 insufficient CPU(CPU 不足),请检查每个任务和容器实例使用的资源。要解决此错误,请执行以下操作:

有关 CPU 不足的信息,请参阅如何解决 Amazon ECS 中的错误“the closest matching container-instance container-instance-id has insufficient CPU units available”(匹配最接近的容器实例 container-instance-id 可用的 CPU 单元不足)?

对您的 Amazon ECS 容器实例使用动态扩缩,根据 CPU 或内存资源使用情况自动向集群添加更多实例。监控 CpuUtilizedMemoryUtilized Amazon CloudWatch 指标,以确定系统的阈值。然后,使用目标跟踪步进扩展步进扩展和简单扩展策略,根据该阈值扩展您的自动扩缩组。有关如何监控资源使用情况的详细信息,请参阅容器监控

错误详细信息: 无法放置任务资源 eni 或超出实例网络接口限制

如果容器实例没有可用的弹性网络接口连接点,请减少任务和任务副本的数量。或者,向您的集群添加更多容器实例。如果问题仍然存在,请使用 awsvpcTrunking 来增加您的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上的弹性网络接口密度。

错误详细信息: 匹配最接近的容器实例缺少任务所需的属性

**注意:**要安装 ecs-cli,请参阅 GitHub 网站上的 amazon-ecs-cli

当您的任务定义包含需要容器实例中缺少的容器实例属性的参数时,您会收到此错误。

要检查缺失的属性,请运行 check-attributes Amazon ECS 命令行界面 (ECS CLI) 命令:

$ ecs-cli check-attributes --container-instances container-instance --cluster cluster-name --region region-code --task-def task-def-name

**注意:**将 container-instance 替换为您的容器实例名称,将 cluster-name 替换为您的集群名称,将 region-code 替换为您的 AWS 区域,将 task-def-name 替换为您的任务定义。

此命令的输出显示了包含缺失的必需属性的表。

您可以将 Amazon ECS 服务配置为在与容器实例子网不同的子网上运行。在这种情况下,即使任务因缺失属性错误而失败,ecs-cli-check-attributes 命令的输出也会针对缺失的属性显示 None(无)。您的服务和容器实例的子网必须匹配。要解决此问题,请在容器实例所在的子网中重新创建 Amazon ECS 服务。有关详细信息,请参阅 Amazon ECS 任务定义参数

错误详细信息: 未满足 ABCDXYZ 放置约束

如果您使用放置约束将任务放置在特定实例中,请确保容器实例支持选定的属性或约束。

例如,对于 distinctinstance,每个活动任务都放置在不同的容器实例上。如果有 5 个任务和 3 个容器实例可用,则任务放置失败,您会收到 constraint unsatisfied(未满足约束)错误。要解决 dinstinctinstance 的此问题,请向您的集群添加更多容器实例。

相关信息

Amazon ECS 故障排除

创建 ECS 服务

如何解决 Amazon ECS 任务在容器退出时停止或无法启动的问题?

查看 Amazon ECS 服务事件消息

AWS 官方已更新 1 年前