【问题标题】:What is the easiest way to "recycle" tasks in Amazon ECS?在 Amazon ECS 中“回收”任务的最简单方法是什么?
【发布时间】:2017-01-20 12:37:16
【问题描述】:
假设在 ECS 中运行的服务有 2 个任务,我想启动一个新版本的基础映像。如果我创建任务的新版本,并更新服务以使用新定义,它将使用新版本启动 2 个新任务,等待它们变得健康,然后注销旧任务。
这一切都很好,但这意味着我正在创建一堆相同的任务定义,因为图像名称没有改变(它是myapplication:latest)。而且,实验表明,如果我手动停止任务,让 ECS 重新启动它,它将使用更新的图像。但是,手动停止任务会导致它在启动替换之前立即取消注册,这意味着短暂的停机时间。
据我所知,无法从控制台重新启动图像。 CLI有什么办法吗?或者,我没有想到的其他技巧?
【问题讨论】:
标签:
amazon-web-services
amazon-ecs
【解决方案1】:
这里没有技巧 - 启动新版本任务(作为服务运行)的正确方法是注册新任务定义,然后更新服务以指向该新定义。请记住,您的图像存在于任务定义中,它存在于任务中,它存在于服务中。
最简单的方法:
- 注册一个新的任务定义(例如
register-task-definition通过CLI)。即使您的定义文件中没有任何更改,AWS 也会注册一个新定义。
- 更新指向同一任务的服务,但保留关闭任务修订号。 AWS 将重启两个新服务,等待它们上线,然后使用旧定义停止两个旧任务。
- 注销您的旧任务(可选)。您可以让现有服务运行指向已取消注册的任务定义。