Amazon ECS 的 Amazon EC2 容器实例
Amazon ECS 容器实例是运行 Amazon ECS 容器代理且注册到集群的 Amazon EC2 实例。当您使用 EC2 启动类型、External 启动类型或自动扩缩组容量提供程序通过 Amazon ECS 运行任务时,您的任务将放置在活动容器实例上。您负责容器实例管理和维护。
尽管您可以自行创建在 Amazon ECS 上运行您的容器化工作负载所需的符合基本规范的 Amazon EC2 实例 AMI,但 AWS 工程师仍会在 Amazon ECS 上预配置并测试经 Amazon ECS 优化的 AMI。这是可供您开始操作并快速获取 AWS 上运行的容器的最简单方式。
您使用控制台创建集群时,Amazon ECS 会使用与所选操作系统关联的最新 AMI 为您的实例创建启动模板。
使用 AWS CloudFormation 创建集群时,SSM 参数是自动扩缩组实例的 Amazon EC2 启动模板的一部分。您可以将该模板配置为使用动态 Systems Manager 参数来确定要部署的经 Amazon ECS 优化的 AMI。此参数可确保每次部署堆栈时,都会检查是否存在需要应用到 EC2 实例的可用更新。有关如何使用 Systems Manager 参数的示例,请参阅《AWS CloudFormation 用户指南》中的 Create an Amazon ECS cluster with the Amazon ECS-optimized Amazon Linux 2023 AMI。
您可以从与您的应用程序兼容的实例类型中进行选择。使用较大的实例,您可以同时启动更多任务。使用较小的实例,您可以以更精细的方式进行横向扩展以节省成本。您不需要为适合集群中所有应用程序而选择单个 Amazon EC2 实例类型。相反,您可以创建多个自动扩缩组,其中每个组都具有不同的实例类型。然后,您可以为这些组的每一组创建一个 Amazon EC2 容量提供程序。
使用以下指南来确定要使用的实例系列类型和实例类型:
-
消除不满足应用程序特定要求的实例类型或实例系列。例如,如果您的应用程序需要 GPU,则可以排除没有 GPU 的任何实例类型。
-
考虑包括网络吞吐量和存储在内的要求。
-
考虑 CPU 和内存。通常,CPU 和内存必须足够大,从而足以容纳要运行的任务的至少一个副本。
竞价型实例
与按需型实例相比,Spot 容量可以显著节省成本。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 一起使用时,会将多个实例类型启动到您的自动扩缩组中。这样可以确保 Spot 容量请求可以在需要时得到满足。为了最大限度地提高可靠性以及最大限度地降低复杂性,请在混合实例策略中使用具有大致相同数量的 CPU 和内存的实例类型。这些实例可以来自不同的代系,也可以是相同基本实例类型的变体。请注意,它们可能会包含您可能不需要的其他功能。此类列表的一个例子可能包括 m4.large、m5.large、m5a.large、m5d.large、m5n.large、m5dn.large 和 m5ad.large。有关更多信息,请参阅 Amazon EC2 Auto Scaling 用户指南中的具有多个实例类型和购买选项的自动扩缩组。
-
使用经容量优化的 Spot 分配策略 - 借助 Amazon EC2 Spot,您可以在经容量和成本优化的分配策略之间进行选择。如果您在启动新实例时选择经容量优化的策略,Amazon EC2 Spot 会选择在所选可用区中可用性最高的实例类型。此项有助于减少实例在启动后不久便终止的可能性。
有关如何在容器实例上配置竞价型终止通知的信息,请参阅: