如何解决 Amazon ECS 中的“The closest matching container-instance container-instance-id has insufficient CPU units available”错误?
上次更新时间:2019 年 7 月 3 日
当我尝试在 Amazon Elastic Container Service (Amazon ECS) 中放置任务时,收到以下错误:“ was unable to place a task because no container instance met all of its requirements.The closest matching container-instance container-instance-id has insufficient CPU units available.” 如何解决此错误?
简短描述
如果用于放置任务的匹配程度最高的容器实例没有足够的 CPU 单元满足任务定义的要求,则可能会出现此错误。
注意:如果您没有收到上述错误消息,请根据您收到的以下错误消息选择文章:
was unable to place a task because no container instance met all of its requirements. was unable to place a task because no container instance met all of its requirements.The closest matching container-instance container-instance-id encountered error "AGENT".解决方法
检查您的容器实例上的剩余 CPU 单元
-
打开 Amazon ECS 控制台。
选择要在其中放置任务的集群,然后选择 ECS 实例选项卡。
选择容器实例 ID 与错误消息中所返回的容器实例 ID 相符的容器实例。
在实例的详细信息选项卡上检查剩余 CPU 单元,注意查找列出已注册和可用 CPU 单元数的表格的 CPU 行。
注意:您也可以使用 awscli 描述容器实例,以便查看 CPU 单元。
调整以满足 CPU 要求
-
修改您的任务大小,以满足 CPU 要求。
注意:您还可以选择可以指定用于任务的 CPU 总数。在容器定义级别上,总量值是与 CPU 和内存值分开的。CPU 总量是一个不能超过的硬性限制。如果您未在任务级别上设置 CPU 单元,则系统会使用容器定义中制定 CPU 设置来制定计划。 修改您的容器定义参数以满足 CPU 要求。
注意:您可以修改任务定义的容器定义部分内的 cpu 属性值。此属性对应于 ECS 容器代理为您的任务保留的 CPU 单元数。EC2 实例上剩余的 CPU 单元数必须至少等于容器定义级别的数量。EC2 实例可以具有的 CPU 单元数量因集群中所用的实例类型而异。 此时可以将另一个容器实例添加到集群。
注意:您可能需要向容器中添加更大的实例类型。较大的实例类型能为每个实例提供更多的 CPU 单元,从而处理较大的任务。有关按实例类型区分的 CPU 可用性的更多信息,请参阅 Amazon EC2 实例类型。