服务事件消息 - Amazon Elastic Container Service
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

服务事件消息

排除服务故障时,首先应检查 诊断信息是服务事件日志。您可以使用 DescribeServices API, AWS CLI,或使用 AWS 管理控制台.

当使用 Amazon ECS API,仅服务的事件 调度程序返回。这些包括最新的任务放置和实例健康 事件。但是, Amazon ECS 控制台显示来自以下项的服务事件 来源。

  • 任务放置和实例健康事件 Amazon ECS 服务调度程序。这些 事件的前缀为 服务 (service-name)。确保 活动视图很有帮助,我们仅显示 100 最近的事件和 在原因得到解决或六小时之前,省略重复的事件信息 通过。如果原因在六小时内仍未解决,您将收到另一个 该原因的服务事件消息。

  • 服务自动扩展事件。这些事件的前缀为 信息. 的 10 最近的扩展事件是 所示。仅当服务配置了 Application Auto Scaling 规模化 政策。

使用以下步骤查看当前服务事件消息。

要查看中的服务事件日志 Amazon ECS 话务台

  1. https://console.amazonaws.cn/ecs/ 上打开 Amazon ECS 控制台。

  2. 页面,选择其中的群集 您的服务驻留。

  3. 簇: clustername 页面,选择 服务以检查。

  4. 服务: servicename 页面,选择 事件.

    
                            服务事件消息
  5. 检查 信息 错误或其他 有用信息。

使用 描述服务 命令查看指定服务的服务事件消息。

以下内容 AWS CLI 示例描述了 service-name 服务 default 聚类,这将提供 最新服务事件消息。

aws ecs describe-services \ --cluster default \ --services service-name \ --region us-west-2

服务事件消息

以下是您在 Amazon ECS 话务台。

服务调度员将发送 service service-name) has reached a steady state. 服务是健康且符合预期 任务数量,因此达到稳态。

当服务调度员找不到 添加另一个任务的可用资源。造成这种情况的可能原因 是:

在您的群集中未找到容器实例

如果未在群集中注册容器实例,则您 尝试运行任务,您将收到此错误。您应该 将容器实例添加到群集。更多信息,请参阅 启动 Amazon ECS 容器 实例.

没有足够的端口

如果您的任务使用固定的主端口映射(例如,您的任务 使用主服务器上的端口80作为Web服务器),您必须至少 每个任务一个容器实例,因为只有一个容器可以使用 一个单一主端口。您应该将容器实例添加到 或减少所需的任务数量。

注册的端口过多

任务放置最接近的匹配容器实例不能 超过100个主端口的最大允许保留端口限制 容器实例。使用动态主端口映射可能会纠正 问题。

内存不足

如果您的任务定义指定了1000MiB内存,以及 群集中每个容器实例有1024MiB的内存, 每个容器实例只能运行一个此任务的副本。您 可以在任务定义中以较少的记忆进行试验,以便 每个容器实例可启动多个任务,或启动 更多容器实例进入群集。

注意

如果您试图通过 为特定的 实例类型,请参阅 容器实例内存管理.

CPU不足

每个CPU核心的容器实例有1,024个CPU单元。如果 您的任务定义指定了1,000个CPU单位,以及容器 群集中每个实例有1,024个CPU单位,您只能 每个容器实例运行此任务的一个副本。您可以尝试 在任务定义中拥有更少的CPU单位,以便 每个容器实例启动多个任务,或启动多个 容器实例到群集中。

没有足够的可用ENI附件点

使用 awsvpc 网络模式,每个接收 其自己的弹性网络界面(ENI),它连接到 容器实例。 Amazon EC2 实例限制为 可以附着的ENI数量, 具有可用ENI能力的群集中的容器实例。

单个容器实例的ENI限制取决于 以下情况:

  • 如果您 没有 选择加入 到 awsvpcTrunking 客户设置,ENI 每个容器实例的限制取决于实例 类型。更多信息,请参阅 每个IP地址 每个实例类型的网络界面Amazon EC2 用户指南(适用于 Linux 实例).

  • 如果您 选择加入 的 awsvpcTrunking 但您 没有 推出了新的 使用支持的实例类型的容器实例 选择加入,每个容器实例的ENI限制将 仍为默认值。更多信息,请参阅 IP地址 每个实例类型每个网络界面Amazon EC2 用户指南(适用于 Linux 实例).

  • 如果您 选择加入 的 awsvpcTrunking 和您 推出了新的 使用支持的实例类型的容器实例 选择加入,其他ENI可用。更多 信息,请参阅 支持 Amazon EC2 实例 类型.

有关选择加入 awsvpcTrunking 帐户设置,请参阅 弹性网口集群.

您可以将容器实例添加到群集,以提供更多 可用的网络适配器。

容器实例缺少必需属性

一些任务定义参数需要特定的远程Docker 容器实例上安装的API版本。其他,例如 作为记录驱动选项,要求容器实例 在 ECS_AVAILABLE_LOGGING_DRIVERS 代理配置 变量。如果您的任务定义包含需要 特定容器实例属性,并且您没有任何 可以满足此要求的容器实例, 不能放置任务。

导致此错误的常见原因就是您的服务正在使用任务 使用 awsvpc 网络模式和 EC2 启动类型,您指定的群集不会 在其所在的同一subnet中注册了容器实例, 在 awsvpcConfiguration 当 服务已创建。

更多关于特定属性的信息 任务定义参数和代理配置变量,请参阅 任务定义参数Amazon ECS 容器代理配置.

任务放置最接近的匹配容器实例不是容器 满足任务定义中的要求。查看CPU 任务大小和容器定义参数的要求 任务定义。

的 Amazon ECS 任务最接近的匹配容器实例上的容器代理 位置已断开连接。如果您能够连接至容器实例 SSH,您可以检查代理日志;有关更多信息,请参阅 Amazon ECS 容器代理日志. 您还应核实 代理在实例上运行的。如果您使用的是 Amazon ECS-optimized AMI,您可以使用 下列命令:

  • 对于 Amazon ECS-optimized Amazon Linux 2 AMI:

    sudo systemctl restart ecs
  • 对于 Amazon ECS-optimized Amazon Linux AMI:

    sudo stop ecs && sudo start ecs

此服务已注册有负载平衡器和负载平衡器运行状况 检查失败。更多信息,请参阅 服务负荷故障排除 平衡器.

此服务包含连续后未能启动的任务 尝试。此时,服务调度程序开始逐渐增加 重试之间的时间。您应该排除为什么您的任务无法 启动。更多信息,请参阅 服务限制逻辑.

更新服务后(例如,使用更新的任务定义), 服务调度程序恢复正常行为。

由于API限制限制,此服务无法启动更多任务。一次 服务调度程序能够启动更多任务,它将恢复。

要申请API速率限制配额增加,请打开 安理会支持中心 网页,必要时登录, 并选择 创建案例. 选择 服务限制 增加. 填写并提交表格。