我有一个正在运行2个任务的现有服务。我用新的任务定义更新了现有服务,而旧的服务定义已被废止。新任务失败,但旧任务被终止,服务尝试启动新任务,但失败了。这导致根本没有任何任务在运行。 无法完成新任务的原因是由于我的代码中存在错误。但是,ECS不应该确保当新任务没有启动时,旧的健康任务仍在运行。
ECS何时决定终止旧任务? 我知道任务状态变为“正在运行”。 “跑步”是否意味着健康?在进一步调试中,我发现有问题的任务处于运行状态一段时间。
答案 0 :(得分:1)
好吧,让我解释一下发生了什么
更新任务定义(假设您正在运行其中的某些任务)时,ECS会尝试执行蓝绿色部署,即等待具有 ready 状态的新任务,然后停止旧的。
现在,您的任务将在容器启动时进入就绪状态,但是当它尝试执行内部有错误的代码时,它将崩溃并死亡,因此它将再次更改其状态,但已通过就绪状态,因此旧任务已经被杀死。
答案 1 :(得分:0)
我与AWS团队进行了讨论,并得出结论,如果认为新任务没有问题,ECS不会杀死旧任务。当服务与ALB绑定时,ECS不会注销旧任务,直到ALB将新任务标记为正常为止。