Amazon Elastic Container Service
开发人员指南 (API 版本 2014-11-13)
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

服务事件消息

如果您正在解决与服务相关的问题,首先应查看服务事件日志中的诊断信息。

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

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

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

  3. Cluster : clustername (集群: <集群名称>) 页面上,选择要检查的服务。

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

    
                        服务事件消息
  5. 检查 Message 列是否存在错误或其他有用信息。

服务事件消息

以下是您可能会在控制台中看到的服务事件消息的示例:

(服务 service-name)无法放置任务,因为找不到资源。

在上图中,此服务找不到可用的资源,无法添加其他任务。导致出现此情况的可能原因是:

端口不足

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

内存不足

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

注意

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

CPU 不足

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

没有足够的可用 ENI 附加点

每个使用 awsvpc 网络模式的任务都会收到自己的弹性网络接口,且会附加到托管任务的容器实例。Amazon EC2 实例对可以附加到它们的网络接口数量有限制,并且主网络接口算作一个。例如,一个 c4.large 实例可能附加有 3 个网络接口。实例的主要网络适配器计为一个,因此您可以向该实例再附加 2 个 ENI。因为每个 awsvpc 任务需要一个网络接口,所以您只能在该实例类型上运行 2 个此类任务。有关每个实例类型支持的网络接口数量的更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的每个实例类型的每个网络接口的 IP 地址。您可以将容器实例添加到您的集群以提供更多可用的网络适配器。

容器实例缺少必需属性

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

注意

Windows container instances with Amazon ECS container agent versions earlier than 1.17.0 do not support the awslogs log driver by default. If you are unable to use the awslogs log driver with your Windows container instances, ensure that you are using the latest Amazon ECS-optimized Windows AMI.

(service service-name) 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".

用于任务放置的最近匹配容器实例上的 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

(service service-name) (instance instance-id) is unhealthy in (elb elb-name) due to (reason Instance has failed at least the UnhealthyThreshold number of health checks consecutively.)

此服务已注册到一个负载均衡器,并且未通过负载均衡器运行状况检查。有关更多信息,请参阅服务负载均衡器问题排查

(service service-name) is unable to consistently start tasks successfully.

此服务包含在连续多次尝试之后仍无法启动的任务。此时,服务计划程序开始逐渐增加重试间隔的时间。您应该排查任务无法启动的原因。有关更多信息,请参阅 服务限制逻辑

服务更新后,例如,通过更新的任务定义更新后,服务计划程序恢复正常行为。

本页内容: