Amazon Amazon ECS 启动类型和容量提供程序
Amazon ECS 提供了两种配置工作负载容量的方法。您可以使用启动类型,也可以使用容量提供程序。启动类型包括 EC2、Fargate 和“外部”。容量提供程序针对容量管理提供了增强的灵活性和高级功能。您可以使用 Fargate 和 Fargate Spot 容量提供程序在无服务器计算环境中运行工作负载,通过自动扩缩组容量提供程序在自行管理的 EC2 实例上运行工作负载,也可以使用将 Fargate 的简便性与 EC2 计算的灵活性相结合的 Amazon ECS 托管实例容量提供程序在完全托管的计算环境中运行工作负载。容量提供程序能够更好地控制资源分配,并有助于优化性能和成本。与传统的启动类型相比,容量提供程序是配置工作负载容量的推荐方式。请使用以下内容来了解容量提供程序和启动类型之间的区别。
最佳实践
最佳实践如下:
- 使用启动类型来定义基础设施兼容性。
-
启动类型定义任务和服务在其上运行的基础设施。在定义任务时,请指定
RequiresCompatibilities,以包含一个或多个与任务兼容的启动类型。您可以使用以下启动类型:EC2、Fargate、“外部”和 Amazon ECS 托管实例。虽然您也可以使用启动类型来运行任务或服务,但我们建议仅使用启动类型在任务定义中定义兼容性,并使用容量提供程序来启动任务或服务。请注意,您可以选择一种或多种启动类型来定义任务的兼容性。 - 使用容量提供程序来配置计算容量
-
启动任务或服务时,请配置一个容量提供程序策略。Amazon ECS 支持以下容量提供程序:Fargate 和 FARGATE_SPOT、用于自行管理 EC2 实例的自动扩缩组以及 Amazon ECS 托管实例。请注意,竞价型实例集只能作为容量提供程序使用,而不能作为启动类型使用。您可以在集群中创建一个或多个 Amazon ECS 托管实例或自动扩缩组容量提供程序。Fargate 和 Fargate Spot 容量提供程序由 Amazon ECS 在每个集群上创建和管理,您无需手动创建它们。一个集群可以同时包含所有类型的容量提供程序,但是,一个容量提供程序策略不能同时包含不同类型的容量提供程序。
- 更新服务的容量
-
您可以简单地更新服务的容量提供程序策略,将其从一种计算类型迁移到另一种计算类型。
服务可变性
Amazon ECS 支持在不同的容量提供程序之间更新服务。这允许:
-
从启动类型无缝更新到容量提供程序
-
在不同的容量提供程序类型之间转换
-
在不重新创建服务的情况下测试不同的计算选项
下面是该流程的简要概述:
更新任务定义 – 确保
requiresCompatibilities包含目标容量提供程序,例如MANAGED_INSTANCES。注意
任务定义必须通过目标容量提供程序的兼容性验证。如果任务定义版本的
requiresCompatibilities检查失败,则UpdateService调用也会失败。创建容量提供程序:如果您使用自定义 Amazon EC2 Auto Scaling 组,请创建容量提供程序。
更新服务 – 修改服务,使其使用容量提供程序策略而不是启动类型。
验证部署 – 确认任务部署成功。
监控和优化 – 根据需要调整容量提供程序设置。
容量提供程序到容量提供程序
所有容量提供程序到容量提供程序的更新均受支持:
-
Amazon EC2 Auto Scaling 组容量提供程序到 Amazon ECS 托管实例
-
Fargate 容量提供程序到 Amazon ECS 托管实例
-
Amazon EC2 Auto Scaling 组容量提供程序到 Fargate 容量提供程序
-
Amazon ECS 托管实例到 Fargate 容量提供程序
-
Fargate 容量提供程序到 Amazon EC2 Auto Scaling 组容量提供程序
-
Amazon ECS 托管实例到 Amazon EC2 Auto Scaling 组容量提供程序
启动类型到容量提供程序
所有启动类型到容量提供程序的更新均受支持:
-
EC2 启动类型到 Amazon ECS 托管实例
-
Fargate 启动类型到 Amazon ECS 托管实例
-
EC2 启动类型到 Fargate 容量提供程序
-
EC2 启动类型到 EC2 自动扩缩组容量提供程序
-
Fargate 启动类型到 Amazon EC2 Auto Scaling 组容量提供程序
-
Fargate 启动类型到 Fargate 容量提供程序
-
外部启动类型到 Amazon ECS 托管实例
-
外部启动类型到 Fargate 容量提供程序
-
外部启动类型到 Amazon EC2 Auto Scaling 组容量提供程序
启动类型到启动类型
启动类型到启动类型的更新不受支持:
-
EC2 启动类型到 Fargate 启动类型(请改用 Fargate 容量提供程序)
-
Fargate 启动类型到 EC2 启动类型(请改用 Amazon EC2 Auto Scaling 组容量提供程序)
无需在启动类型之间迁移,请迁移到同等容量提供程序以增强功能和未来的兼容性。
注意
任务定义必须通过目标容量提供程序的兼容性验证。如果任务定义版本的 requiresCompatibilities 检查失败,则 UpdateService 调用也将失败。