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

Amazon ECS 容量提供程序

Amazon ECS 容量提供程序用于管理集群中任务使用的基础架构。每个集群可以有一个或多个容量提供程序和一个可选的默认容量提供程序策略。容量提供程序策略确定任务在集群的容量提供程序之间的分布方式。运行任务或创建独立服务时,您可以使用集群的原定设置容量提供程序策略,也可以指定容量提供程序策略来取代集群的原定设置策略。

容量提供程序概念

容量提供程序由以下组件组成。

容量提供程序

容量提供程序与群集关联,并在容量提供程序策略中用于确定任务运行的基础结构。

对于 Amazon Fargate 用户上的Amazon ECS,有一个 FARGATEFARGATE_SPOT 容量提供程序。Amazon Fargate 容量提供程序已保留,无需创建,也无法删除它们。与群集关联后,您可以将它们添加到容量提供程序策略中。有关更多信息,请参阅Amazon Fargate 容量提供程序

对于 Amazon EC2 用户上的 Amazon ECS,容量提供程序由名称、Auto Scaling 组以及托管调整和托管终止保护的设置组成。借助托管扩展,Amazon ECS 管理 Auto Scaling 组的缩减和扩展操作,从而为集群的基础设施提供自动调整。有关更多信息,请参阅Auto Scaling 组容量提供程序

默认容量提供程序策略

原定设置容量提供程序策略与每个 Amazon ECS 集群相关联。这决定了在没有指定自定义容量提供程序策略或启动类型时,在群集中创建服务或运行独立任务时使用的容量提供程序策略。最好为每个集群定义原定设置容量提供程序策略。

容量提供程序策略

当群集的原定设置容量提供程序策略不能满足您的需要时,在创建服务或运行独立任务时指定容量提供程序策略

只有已与集群关联状态为 ACTIVEUPDATING 的容量提供程序才能在容量提供程序策略中使用。容量提供程序可以在创建群集期间或在创建群集后使用 PutClusterCapacityProviders API与群集关联。

容量提供程序策略由一个或多个容量提供程序。可以指定可选的基准值权重值,以便更好地控制容量提供程序。

基准值指明在指定的容量提供程序上至少运行多少个任务。在一个容量提供程序策略中,只能有一个容量提供程序策略定义了基准。

权重值指明应使用指定容量提供程序的已启动任务总数的相对百分比。例如,如果您的策略包含两个容量提供程序,并且两个容量提供程序的权重均为 1,那么当满足基准时,这些任务将在两个容量提供程序之间均匀分配。按照相同的逻辑,如果您为 capacityProviderA 指定权重 1,并为 capacityProviderB 指定权重 4,那么运行的每一个任务均使用 capacityProviderA,四个任务将使用 capacityProviderB

容量提供程序类型

运行 Amazon ECS 工作负载的基础设施决定了您可以使用的容量提供程序类型。

对于 Fargate 上托管的 Amazon ECS 工作负载,可以使用以下预定义容量提供程序:

  • Fargate

  • Fargate Spot

对于托管在 Amazon EC2 实例上的 Amazon ECS 工作负载,您必须创建并维护包含以下组件的容量提供程序:

  • 名称

  • Auto Scaling 组

  • 托管扩缩和托管终止保护的设置。

容量提供程序注意事项

使用容量提供程序时应考虑以下因素:

  • 在容量提供程序策略中指定之前,容量提供程序必须与群集关联。

  • 指定容量提供程序策略时,可指定的容量提供程序数限制为六个。

  • 使用 Auto Scaling 组容量提供程序的服务无法更新为使用 Fargate 容量提供程序,反之亦然。

  • 在容量提供程序策略中,如果未在控制台中为容量提供程序指定 weight 值,则使用原定设置值 1。如果使用 API或 Amazon CLI,则使用原定设置值 0

  • 如果在容量提供程序策略中指定了多个容量提供程序,则至少有一个容量提供程序的权重值必须大于零,且任何权重为 0 的容量提供程序都不会被用来放置任务。如果您在策略中指定的多个容量提供程序的权重全部为 0,则使用该容量提供程序策略的任何 RunTaskCreateService 操作都将失败。

  • 在容量提供程序策略中,只能有一个容量提供程序定义了基准值。如果未指定基准值,则使用原定设置值 0

  • 集群可能同时包含 Auto Scaling 组容量提供程序和 Fargate 容量提供程序,但是容量提供程序策略可能只包含其中一个,而不能同时包含两个。

  • 集群可能包含使用两个容量提供程序和两种启动类型的任务和服务和独立任务的组合。服务可能会更新为使用容量提供程序策略而不是启动类型,但是在执行此操作时必须强制实施新部署。

  • 使用托管终止保护时,还必须启用托管扩缩,否则托管终止保护将无法工作。

  • 在对服务使用 Classic Load Balancers 时,不支持使用集群容量提供程序。