Amazon EC2 Container Service
开发人员指南 (API Version 2014-11-13)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。点 击 Getting Started with Amazon AWS to see specific differences applicable to the China (Beijing) Region.

服务事件消息

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

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

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

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

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

  4. Service : servicename 页面上,选择 Events 选项卡。

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

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

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

端口不足

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

内存不足

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

CPU 不足

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

容器实例缺少必需属性

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

(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 优化的 AMI,则可以尝试通过以下命令停止并重新启动代理:

Copy
[ec2-user ~]$ sudo stop ecs ecs stop/waiting [ec2-user ~]$ sudo start ecs ecs start/running, process 26119

(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.)

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