通过替换任务来部署 Amazon ECS 服务 - Amazon Elastic Container Service
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

通过替换任务来部署 Amazon ECS 服务

当创建一项使用滚动更新ECS)部署类型的服务时,Amazon ECS 服务调度器会将当前正在运行的任务替换为新任务。在滚动更新期间 Amazon ECS 在服务中添加或删除的任务数量由服务部署配置控制。部署配置由以下内容组成:

  • minimumHealthyPercent 表示在部署期间或容器实例耗尽时应为服务运行的任务数的下限,服务所需任务数的百分比表示。此值四舍五入。例如,如果最小运行状况百分比为 50,并且所需的任务计数为 4,则调度器可以在启动两个新任务之前停止两个现有任务。同样,如果最小运行状况百分比为 75%,所需任务计数为 2,则由于结果值也为 2,调度器无法停止任何任务。

    如果任务运行不正常,Amazon ECS 服务计划程序将首先启动替换任务并维持 minimumHealthyPercent 任务,直到替换任务运行正常为止。替换任务启动并运行正常后,运行不正常的任务将逐渐停止。

  • maximumPercent 表示部署期间或容器实例耗尽时应为服务运行的任务数的上限,服务所需任务数的百分比表示。此值四舍五入。例如,如果最大百分比为 200 且目标任务为计数四,则调度器可以在停止四个现有任务之前启动四个新任务。同样,如果最大百分比为 125,且目标任务计数为三,则调度器无法启动任何任务,因为结果值也是三。

重要

设置最小运行状况百分比或最大百分比时,应确保调度器在启动部署时可以停止或启动至少一个任务。如果您的服务由于部署配置无效而停滞的部署,将发送服务事件消息。有关更多信息,请参阅 因为服务部署配置,服务 (service-name) 无法在部署期间停止或启动任务。更新 minimumHealthyPercent 或 maximumPercent 值,然后重试。

滚动部署会使用部署断路器来确定任务是否达到稳定状态。部署断路器可以在部署失败时选择性地回滚部署。

容器映像解析

为了确保服务中的所有任务都使用相同的容器映像,Amazon ECS 会将容器映像名称和任务定义中指定的任何映像标签解析为容器映像摘要。如果您创建的服务可以运行和维护单个任务,则该任务将用于建立容器映像摘要。如果您创建的服务可以运行和维护多个任务,则服务计划程序会在部署期间首先启动一个任务。第一个任务用于建立容器镜像摘要。

建立容器映像摘要后,Amazon ECS 将使用摘要来启动任何其他所需的任务,以及用于任何未来的服务更新。这会导致服务中的所有任务始终运行相同的容器镜像,从而确保软件的版本一致性。

如果尝试建立容器镜像摘要时失败三次或以上,则部署将继续,但不再进行映像摘要解析。如果启用了部署断路器,则部署还会失败并回滚。

注意
  • Amazon ECS 不会捕获由 Amazon ECS 管理的附加容器摘要,例如 Amazon GuardDuty 安全代理或 Service Connect 代理。

  • Amazon ECS 不会在使用经典负载均衡器的服务中捕获容器摘要。

  • 映像摘要解析的最低 Fargate 平台版本为 1.4.0

  • 低于 1.31.0 版本的 Amazon ECS 代理不支持映像摘要解析。代理版本 1.31.0-1.69.0 仅支持对推送到 Amazon ECR 存储库的映像进行映像摘要解析。代理版本 1.70.0 或更高版本支持所有映像的映像摘要解析。

  • 要减少具有多个任务的服务中的与容器映像解析相关的可能延迟,请在 EC2 容器实例上运行 Amazon ECS 代理版本 1.83.0 或更高版本。要完全避免可能的延迟,请在任务定义中指定容器映像摘要。

故障检测

这两种方法可以让您快速识别部署失败的时间,然后有选择地将失败回滚到最后一个工作部署。

可以单独使用这些方法,也可以一起使用。当同时使用这两种方法时,只要满足任一故障方法的故障标准,部署就会设置为失败。

使用以下准则来帮助确定要使用哪种方法:

  • 断路器 — 若要在任务无法启动时停止部署,请使用此方法。

  • CloudWatch 警报 — 若要根据应用程序指标停止部署,请使用此方法。