跳至内容

如何对在 EC2 实例上运行的 Amazon ECS 任务的计划问题进行故障排除?

1 分钟阅读
0

Amazon Elastic Container Service (Amazon ECS) 未按预期将我的任务放置在 Amazon Elastic Compute Cloud (Amazon EC2) 实例上。

解决方法

如果 Amazon ECS 无法放置您的任务,则该任务将停留在 PROVISIONING(配置中)状态。您会在服务事件消息中收到以下错误:

“服务 (ServiceName) 无法放置任务,因为没有容器实例满足其所有要求。”

要解决此问题,请在服务事件消息中查看此错误。然后,根据错误原因完成故障排除步骤。

未在集群中找到容器实例

如果您没有将 EC2 实例注册到集群,则您会收到此错误。检查您所配置的容量提供商Amazon EC2 Auto Scaling 组是否存在扩展或实例启动问题。

如果实例已启动,请检查其未连接到集群的原因

匹配最接近的(容器实例 abcdexyz)可用的 CPU/内存/GPU 单元不足

当可用的容器实例没有任务所请求的 CPU、内存或 GPU 时,将会出现此问题。要解决此问题,请执行以下操作:

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

匹配最接近的(容器实例 abcdexyz)已使用了任务所需的端口

当容器实例使用了所需端口时,将会出现此问题。您不能在同一个端口上运行多个任务。要解决此问题,请向您的集群添加更多容器实例。最佳做法是自动扩展容器实例。为您的集群创建容量提供商。或者,要允许您的任务使用容器实例上的任何可用端口,请使用动态端口映射

匹配最接近的(容器实例 abcdexyz)缺少任务所需的属性

当您的容器实例缺少任务定义中定义的所需属性时,将会出现此问题。要检查缺失的属性,请运行 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 替换为您的任务定义。

上述命令的输出中将显示一个包含缺失的必需属性的表。有关如何对缺失属性进行故障排除的信息,请参阅 GitHub 网站上的 Checking for missing attributes and debugging reason attribute errors

匹配最接近的(容器实例 abcdexyz)未连接代理

当 Amazon ECS 代理断开连接时,将会出现此问题。要解决此问题,请参阅以下文章:

匹配最接近的(容器实例 abcdexyz)遇到了错误“MemberOf placement constraint unsatisfied”(未满足 MemberOf 放置约束)。

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

有关详细信息,请参阅如何对 Amazon ECS 任务放置约束问题进行故障排除?

相关信息

Amazon ECS 故障排除

AWS 官方已更新 2 年前