创造容量 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

创造容量

如果你使用AmazonFargateAmazon管理您的容量。

Amazon ECS 容器实例是运行 Amazon ECS 容器代理且已注册到 Amazon ECS 集群的 Amazon EC2 实例。当您使用 EC2 启动类型、外部启动类型或 Auto Scaling 组容量提供程序在 Amazon ECS 上运行任务时,您的任务将放在您的活动容器实例上。您负责容器实例的管理和维护。

亚马逊 ECS 提供经亚马逊 ECS 优化的 AMI(适用于 Linux 和 Windows),其中包含运行任务所需的软件,所有软件都在 AMI 发布之前经过测试。

容器实例概念

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

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

  • 经亚马逊 ECS 优化的 Linux AMI 版本20200430稍后在您的容器实例上支持 Amazon EC2 实例元数据服务版本 2 (imdsv2)。之前的亚马逊 ECS 优化版 AMI 版本20200430支持亚马逊 EC2 实例元数据服务版本 1 (imdsv1)。有关更多信息,请参阅适用于 Linux 实例的 Amazon EC2 用户指南中的配置实例元数据服务

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

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

  • 容器实例需要访问才能与 Amazon ECS 服务端点通信。这可以通过接口 VPC 端点或具有公共 IP 地址的容器实例实现。

    有关接口 VPC 端点的更多信息,请参阅 Amazon Elastic Container Service 开发人员指南中的 Amazon ECS 接口 VPC 端点 (Amazon PrivateLink)

    如果您没有配置接口 VPC 端点,并且您的容器实例没有公有 IP 地址,必须使用网络地址转换 (NAT) 来提供此访问。有关更多信息,请参阅 Amazon VPC 用户指南中的 NAT 网关和本指南中的 Linux 容器实例的 HTTP 代理配置。有关更多信息,请参阅创建 Virtual Private Cloud

  • 以下规则适用,因为每个容器实例都有唯一的状态信息,这些信息存储在本地容器实例和 Amazon ECS 中:

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

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

选择亚马逊 EC2 实例类型

要确定您可以使用哪些实例类型,首先要删除不符合应用程序特定要求的实例类型或实例系列。例如,如果您的应用程序需要 GPU,则可以排除任何没有 GPU 的实例类型。但是,您还应该考虑其他要求。例如,考虑 CPU 架构、网络吞吐量以及是否需要实例存储。接下来,检查每种实例类型提供的 CPU 和内存量。通常,CPU 和内存必须足够大,足以容纳要运行的任务的至少一个副本。

您可以从与您的应用程序兼容的实例类型中进行选择。对于较大的实例,您可以同时启动更多任务。而且,对于较小的实例,您可以以更精细的方式进行横向扩展以节省成本。您无需选择适合集群中所有应用程序的单个 Amazon EC2 实例类型。相反,您可以创建多个 Auto Scaling 组。每个组可以有不同的实例类型。然后,您可以为每个群组创建一个 Amazon EC2 容量提供商。最后,在您的服务和任务的容量提供商策略中,您可以选择最适合其需求的容量提供商。有关更多信息,请参阅 Amazon EC2 实例

使用亚马逊 EC2 Spot

与按需实例相比,竞价型容量可以显著节省成本。竞价容量是定价明显低于按需容量或预留容量的过剩容量。Spot 容量适用于批处理和机器学习工作负载以及开发和暂存环境。更笼统地说,它适用于任何可以容忍临时停机的工作负载。

请理解以下后果,因为 Spot 容量可能并非一直可用。

  • 在需求极高的时期,Spot 容量可能不可用。这可能会导致 Amazon EC2 竞价型实例的启动延迟。在这些情况下,Amazon ECS 服务会重试启动任务,Amazon EC2 Auto Scaling 组也会重试启动实例,直到所需的容量可用为止。Amazon EC2 不会用按需容量取代 Spot 容量。

  • 当总体容量需求增加时,竞价型实例和任务可能会在只有两分钟警告的情况下终止。发出警告后,如有必要,任务应在实例完全终止之前开始有序关闭。这有助于最大限度地减少出错的可能性。有关正常关闭的更多信息,请参阅使用 ECS 实现平稳关机

为了帮助最大限度地减少 Spot 容量短缺,请考虑以下建议:

  • 使用多个区域和可用区-Spot 容量因地区和可用区域而异。您可以通过在多个区域和可用区中运行工作负载来提高 Spot 可用性。如果可能,请在运行任务和实例的区域的所有可用区中指定子网。

  • 使用多个 Amazon EC2 实例类型-当您将混合实例策略与 Amazon EC2 Auto Scaling 配合使用时,会将多个实例类型启动到您的自动扩展组中。这样可以确保竞价容量请求可以在需要时得到满足。为了最大限度地提高可靠性并最大限度地降低复杂性,请在混合实例策略中使用具有大致相同数量的 CPU 和内存的实例类型。这些实例可以来自不同的世代,也可以是相同基础实例类型的变体。请注意,它们可能包含您可能不需要的其他功能。这样的列表的一个例子可能包括 m4.large、m5.large、m5a.large、m5d.large、m5n.large、m5dn.large 和 m5ad.large。有关更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南中的具有多个实例类型和购买选项的自动扩缩组

  • 使用容量优化的竞价分配策略-借助 Amazon EC2 Spot,您可以在容量和成本优化的分配策略之间进行选择。如果您在启动新实例时选择容量优化策略,Amazon EC2 Spot 会选择所选可用区中可用性最高的实例类型。这有助于减少实例在启动后不久就终止的可能性。