Amazon Elastic Container Service
开发人员指南 (API Version 2014-11-13)
AWS 服务或AWS文档中描述的功能,可能因地区/位置而异。请点击 Amazon AWS 入门,可查看中国地区的具体差异

Amazon ECS 容器实例

Amazon ECS 容器实例是一个 Amazon EC2 实例,它运行的是 Amazon ECS 容器代理并且已注册到群集。当您使用 Amazon ECS 运行任务时,您的任务将放置在活动的容器实例上。

容器实例概念

  • 您的容器实例必须运行 Amazon ECS 容器代理才能注册到您的某个集群中。如果您使用的是经 Amazon ECS 优化的 AMI,则已安装该代理。要使用其他操作系统,请安装代理。有关更多信息,请参阅 Amazon ECS 容器代理

  • 由于 Amazon ECS 容器代理代表您调用 Amazon ECS,因此,您必须通过对您的账户进行身份验证并提供所需资源权限的 IAM 角色来启动容器实例。有关更多信息,请参阅 Amazon ECS 容器实例 IAM 角色

  • 如果与您的任务关联的任何容器需要外部连接,您可以将其网络端口映射到主机 Amazon ECS 容器实例上的端口,以便能通过 Internet 访问这些容器。您的容器实例安全组必须允许对您要公开的端口进行入站访问。有关更多信息,请参阅 Amazon VPC 入门指南中的创建安全组

  • 我们强烈建议在 VPC 中启动您的容器实例,因为 Amazon VPC 可提供对您的网络的更多控制并提供更广泛的配置功能。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的 Amazon EC2 和 Amazon Virtual Private Cloud

  • 容器实例需要外部网络访问权限才能与 Amazon ECS 服务终端节点进行通信。如果您的容器实例没有公共 IP 地址,则它们必须使用网络地址转换 (NAT) 或 HTTP 代理来提供此访问权限。有关更多信息,请参阅 Amazon VPC 用户指南 中的 NAT 实例和本指南中的 HTTP 代理配置

  • 您为容器实例选择的 EC2 实例的类型将决定集群中可用的资源。Amazon EC2 提供不同的实例类型,每种类型均具有您可用于运行任务的不同的 CPU、内存、存储和网络容量。有关更多信息,请参阅 Amazon EC2 实例

  • 每个容器实例均具有本地存储在容器实例和 Amazon ECS 中的唯一状态信息,

    • 因此,您不应将实例从一个群集取消注册,然后再将其重新注册到另一个群集。要重新定位容器实例资源,建议您从一个集群终止容器实例,然后在新集群中启动具有最新的经 Amazon ECS 优化的 AMI 的新容器实例。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的终止您的实例启动 Amazon ECS 容器实例

    • 您无法停止容器实例并更改其实例类型。相反,建议您终止容器实例,然后在所需集群中启动具有所需实例大小和最新的经 Amazon ECS 优化的 AMI 的新容器实例。有关更多信息,请参阅 Amazon EC2 用户指南(适用于 Linux 实例) 中的终止您的实例和本指南中的启动 Amazon ECS 容器实例

容器实例生命周期

当 Amazon ECS 容器代理将实例注册到您的集群时,容器实例会将其状态报告为 ACTIVE,并将其代理连接状态报告为 TRUE。此容器实例可接受运行任务请求。

如果您停止(而不是终止)Amazon ECS 容器实例,则状态将保持为 ACTIVE,但代理连接状态将在几分钟内转换为 FALSE。在容器实例上运行的任何任务将停止。如果您再次启动容器实例,则容器代理将使用 Amazon ECS 服务重新连接,并且您能够在实例上再次运行任务。

重要

如果您停止并启动某个容器实例,即重启该实例,则一些旧版本的 Amazon ECS 容器代理会在未取消注册原始容器实例 ID 的情况下再次注册该实例。这种情况下,Amazon ECS 会在群集中列出超出实际拥有数量的容器实例。(如果您具有同一 Amazon EC2 实例 ID 的重复容器实例 ID,则可以安全地取消注册列出为 ACTIVE 且代理连接状态为 FALSE 的重复项。)此问题已在当前版本的 Amazon ECS 容器代理中修复。要更新到当前版本,请参阅更新 Amazon ECS 容器代理

如果将容器实例的状态更改为 DRAINING,则新任务不会置于该容器实例中,并将尽可能删除在此容器实例上运行的所有服务任务,以便执行系统更新。有关更多信息,请参阅 容器实例耗尽

如果您取消注册或终止某个容器实例,则该容器实例状态将立即更改为 INACTIVE,而且在您列出您的容器实例时将不再报告该容器实例。但您仍可以在终止后的 1 小时内描述容器实例。1 小时后,该实例描述将不再可用。

检查您的账户的实例角色

Amazon ECS 容器代理将代表您调用 Amazon ECS API。运行代理的容器实例需要服务的 IAM 策略和角色,以便了解属于您的代理。

大多数情况下,在控制台首次运行体验中将自动为您创建 Amazon ECS 实例角色。您可使用以下过程检查并确定您的账户是否已有 Amazon ECS 服务角色。

在 IAM 控制台中检查 ecsInstanceRole

  1. 登录 AWS 管理控制台 并通过以下网址打开 IAM 控制台 https://console.amazonaws.cn/iam/

  2. 在导航窗格中,选择 Roles

  3. 在角色列表中搜索 ecsInstanceRole。如果角色存在,则您无需创建它。如果角色不存在,请按照 Amazon ECS 容器实例 IAM 角色中的过程操作来创建角色。