Amazon ECS 任务生命周期 - Amazon Elastic Container Service

Amazon ECS 任务生命周期

如果手动启动任务或将任务作为服务的一部分启动,则任务在自行完成或被手动停止之前可能经历多种状态。一些任务旨在作为批处理作业运行,将自然地依次经历 PENDINGRUNNINGSTOPPED 状态。可为服务的一部分的其他任务旨在无限期持续运行,或根据需要向上扩展和向上扩展。

当请求任务状态更改(如停止任务或更新所需服务计数以将其扩展或缩减)时,Amazon ECS 容器代理会根据任务的上一个已知状态 (lastStatus) 和任务的所需状态 (desiredStatus) 跟踪这些更改。任务的上一个已知状态和所需状态均可在控制台中或通过使用 API 或 AWS CLI 描述任务进行查看。

以下流程图显示任务生命周期流程。

任务生命周期状态图。状态为 PROVISIONING、PENDING、ACTIVATING、RUNNING、DEACTIVATING、STOPPING。

生命周期状态

以下是每个任务生命周期状态的描述。

PROVISIONING (正在预置)

Amazon ECS 必须先执行其他步骤,然后再启动任务。例如,对于使用 awsvpc 网络模式的任务,需要预置弹性网络接口。

PENDING

这是一个过渡状态,其中 Amazon ECS 正在等待容器代理采取进一步操作。任务一直处于待处理状态,直到有可用资源可用于该任务。

ACTIVATING (正在激活)

这种一种过渡状态,在此状态下,Amazon ECS 必须在启动任务后但在任务可以过渡到 RUNNING 状态之前执行其他步骤。这是 Amazon ECS 提取容器映像、创建容器、配置任务联网、注册负载均衡器目标组和配置服务发现的状态。

RUNNING (正在运行)

任务正在成功运行。

DEACTIVATING (正在停用)

这种一种过渡状态,在此状态下,Amazon ECS 必须在任务停止前执行其他步骤。例如,对于配置为使用弹性负载均衡目标组的服务所包含的任务,将在此状态下取消注册目标组。

STOPPING (正在停止)

这是一个过渡状态,其中 Amazon ECS 正在等待容器代理采取进一步操作。

对于 Linux 容器,容器代理将发送 SIGTERM 信号,以通知应用程序需要完成并关闭,然后在等待任务定义中设置的 StopTimeout 期限后发送 SIGKILL

DEPROVISIONING (正在取消预置)

Amazon ECS 必须在已停止任务后但在任务过渡到 STOPPED 状态之前执行其他步骤。例如,对于使用 awsvpc 网络模式的任务,需要分离并删除弹性网络接口。

STOPPED (已停止)

任务已成功停止。

如果您的任务因某个错误而停止,请参阅 查看 Amazon ECS 已停止任务错误

DELETED

这是任务停止时的过渡状态。此状态不会显示在控制台中,而是显示在 describe-tasks 中。