如何解决 Amazon ECS 中的“The closest matching container-instance container-instance-id has insufficient CPU units available”错误?

上次更新时间:2019 年 7 月 3 日

当我尝试在 Amazon Elastic Container Service (Amazon ECS) 中放置任务时,收到以下错误:“[AWS service] 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 单元满足任务定义的要求,则可能会出现此错误。

注意:如果您没有收到上述错误消息,请根据您收到的以下错误消息选择文章:

解决方法

检查您的容器实例上的剩余 CPU 单元

  1. 打开 Amazon ECS 控制台
  2. 选择要在其中放置任务的集群,然后选择 ECS 实例选项卡。
  3. 选择容器实例 ID 与错误消息中所返回的容器实例 ID 相符的容器实例。
  4. 在实例的详细信息选项卡上检查剩余 CPU 单元,注意查找列出已注册可用 CPU 单元数的表格的 CPU 行。
    注意:您也可以使用 awscli 描述容器实例,以便查看 CPU 单元。

调整以满足 CPU 要求

  1. 修改您的任务大小,以满足 CPU 要求。
    注意:您还可以选择可以指定用于任务的 CPU 总数。在容器定义级别上,总量值是与 CPU内存值分开的。CPU 总量是一个不能超过的硬性限制。如果您未在任务级别上设置 CPU 单元,则系统会使用容器定义中制定 CPU 设置来制定计划。
  2. 修改您的容器定义参数以满足 CPU 要求。
    注意:您可以修改任务定义的容器定义部分内的 cpu 属性值。此属性对应于 ECS 容器代理为您的任务保留的 CPU 单元数。EC2 实例上剩余的 CPU 单元数必须至少等于容器定义级别的数量。EC2 实例可以具有的 CPU 单元数量因集群中所用的实例类型而异。
  3. 此时可以将另一个容器实例添加到集群。
    注意:您可能需要向容器中添加更大的实例类型。较大的实例类型能为每个实例提供更多的 CPU 单元,从而处理较大的任务。有关按实例类型区分的 CPU 可用性的更多信息,请参阅 Amazon EC2 实例类型

这篇文章对您有帮助吗?

您觉得我们哪些地方需要改进?


需要更多帮助?