Amazon ECS 任务生命周期
如果手动启动任务或将任务作为服务的一部分启动,则任务在自行完成或被手动停止之前可能经历多种状态。一些任务旨在作为批处理作业运行,将自然地依次经历 PENDING
、RUNNING
和 STOPPED
状态。可为服务的一部分的其他任务旨在无限期持续运行,或根据需要向上扩展和向上扩展。
当请求任务状态更改(如停止任务或更新所需服务计数以将其扩展或缩减)时,Amazon ECS 容器代理会根据任务的上一个已知状态 (lastStatus
) 和任务的所需状态 (desiredStatus
) 跟踪这些更改。任务的上一个已知状态和所需状态均可在控制台中或通过使用 API 或 AWS CLI 描述任务进行查看。
以下流程图显示任务生命周期流程。
生命周期状态
以下是每个任务生命周期状态的描述。
- 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
中。