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

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

服务事件消息

排查服务问题时,首先应检查服务事件日志中是否有诊断信息。您可以使用 DescribeServices API、 AWS CLI或 查看服务事件AWS 管理控制台。

在使用 Amazon ECS API 查看服务事件消息时,仅返回来自服务计划程序的事件。其中包括最近的任务放置和实例运行状况事件。但是,Amazon ECS控制台会显示来自以下来源的服务事件。

  • Amazon ECS 服务计划程序中的任务放置和实例运行状况事件。这些事件将具有服务的前缀 (service-name)。 要确保此事件视图有用,我们只显示100最新的事件,并且在解决了原因或过去 6 个小时之后,将忽略重复的事件消息。如果原因在 6 小时内未得到解决,您将收到其他服务事件消息。

  • 服务 Auto Scaling 事件。这些事件的前缀为 Message (消息)。将显示10最新的扩展事件。这些事件仅在为服务配置 扩展Application Auto Scaling策略时发生。

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

在 Amazon ECS 控制台中查看服务事件日志

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

  2. Clusters (集群) 页面上,选择您的服务所在的集群。

  3. 集群 上:clustername 页面上,选择要检查的服务。

  4. 服务 上:servicename 页面上,选择 Events (事件)。

    
                            服务事件消息
  5. 检查 Message (消息) 列以了解错误或其他有用信息。

使用 describe-services 命令查看指定服务的服务事件消息。

以下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 容器实例.

端口不足

如果您的任务使用固定主机端口映射(例如,您的任务对 Web 服务器使用主机上的端口 80),则每个任务必须至少有一个容器实例,因为一次仅一个容器可以使用一个主机端口。您应向集群添加容器实例,或减少所需的任务数。

注册的端口过多

用于任务放置的最密切匹配的容器实例不能超过允许的最大保留端口限制,即每个容器实例 100 个主机端口。使用动态主机端口映射可能会修复此问题。

内存不足

如果您的任务定义指定 1000 个MiB内存,并且集群中的每个容器实例都具有 1024 个MiB内存,则您只能为每个容器实例运行此任务的一个副本。您可以在任务定义中尝试更少的内存,以便为每个容器实例启动多个任务,或者在集群中启动更多容器实例。

注意

如果您尝试通过为任务提供尽可能多的用于特定实例类型的内存来最大程度地利用资源,请参阅容器实例内存管理.

CPU 不足

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

没有足够的可用 ENI 附加点

每个使用 awsvpc 网络模式的任务都会收到自己的弹性网络接口 (ENI),该接口附加到托管它的容器实例。 Amazon EC2 实例对可以附加到它们的 数量有限制ENIs,并且集群中没有具有可用 ENI 容量的容器实例。

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

  • 如果您尚未选择使用 awsvpcTrunking 账户设置,则每个容器实例的 ENI 限制取决于实例类型。有关更多信息,请参阅 https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/using-eni.html 中的Amazon EC2 用户指南(适用于 Linux 实例)每个实例类型的每个网络接口的私有 IP 地址.

  • 如果您已选择使用 awsvpcTrunking 账户设置,但在选择使用后未使用支持的实例类型启动新的容器实例,则每个容器实例的 ENI 限制仍将为默认值。有关更多信息,请参阅 https://docs.amazonaws.cn/AWSEC2/latest/UserGuide/using-eni.html 中的Amazon EC2 用户指南(适用于 Linux 实例)每个实例类型的每个网络接口的私有 IP 地址.

  • 如果您已选择使用 awsvpcTrunking 账户设置,并且您在选择使用支持的实例类型后启动新的容器实例ENIs,则可以使用其他实例。有关更多信息,请参阅支持Amazon EC2的实例类型.

有关选择使用 awsvpcTrunking 账户设置的更多信息,请参阅 弹性网络接口中继.

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

容器实例缺少必需属性

一些任务定义参数需要在容器实例上安装特定的 Docker 远程 API 版本。其他任务定义(例如,日志记录驱动程序选项)需要容器实例使用 ECS_AVAILABLE_LOGGING_DRIVERS 代理配置变量注册这些日志记录驱动程序。如果您的任务定义包含一个需要特定容器实例属性的参数,并且您没有可满足此要求的任何可用容器实例,则无法放置任务。

造成此错误的常见原因是,您的服务正在使用的任务使用的是 awsvpc 网络模式和 EC2 启动类型,并且您指定的集群中没有在服务创建时在 awsvpcConfiguration 中指定的同一子网中注册的容器实例。

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

用于放置任务的最接近的匹配容器实例不会容纳足够的 CPU 单位来满足任务定义中的要求。查看任务定义的任务大小和容器定义参数中的 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 速率限制配额,请打开 AWS 支持中心页面,登录(如有必要),然后选择创建案例。选择 Service Limit increase (提高服务限制). 填写并提交表格。

由于部署配置,此服务无法在服务部署期间停止或启动任务。部署配置由在创建服务时定义的 minimumHealthyPercentmaximumPercent 值组成,不过也可以在现有服务上更新这些值。

表示部署期间或容器实例耗尽时应为服务运行的任务数的minimumHealthyPercent下限,以服务的所需任务数的百分比表示。此值会向上取整。例如,如果最小正常百分比为 50 且所需任务计数为 4,则计划程序可以在开始两个新任务之前停止两个现有任务。同样,如果最小正常百分比为 75%,所需任务计数为 2,则计划程序无法停止任何任务,因为生成的值也为 2。

表示部署期间或容器实例耗尽时应为服务运行的任务数的maximumPercent上限,以服务的预期任务数的百分比表示。该值向下取整。例如,如果最大百分比为 200 ,所需任务为 4,则计划程序可以在停止 4 个现有任务之前启动 4 个新任务。同样,如果最大百分比为 125 ,所需任务计数为 3,则计划程序无法启动任何任务,因为生成的值也是 3。

在设置最小正常百分比或最大百分比时,您应确保计划程序在触发部署时可以停止或启动至少一个任务。