Fargate 自动缩放,可以选择丢弃哪个任务?

Fargate autoscaling, possible to choose which task to drop?

据我所知,如果使用任何正常的缩放方法(例如 Fargate 的步进缩放),则缩小时的结果是选择了一个随机任务。但是,我想以最低的 cpu 使用率缩小任务。

我的用例是每个任务都在处理作业,当一个任务完成所有处理作业时它就处于空闲状态。那时我想把那个拿下来。其他任务仍然会在作业上工作,我不想中途杀死那些任务并让它们失去进度。

我目前的解决方案是让每个任务通过 cron 向 cloudwatch 报告它们的 cpu 使用情况,然后让一个 lambda 任务缩减多个数据点 cpu 低的任何任务。但是对于一个看似简单的问题,这感觉可能有点矫枉过正了。

刚刚添加了一个更新。一年过去了,我们仍在使用类似于我在原始 post 最后一段中描述的解决方案。我们有一个数据库 table 列出了我们想要的任务数量以及我们希望每个任务完成的工作,我们的中央主服务会根据需要进行更新。这些数字从我们的数据库发送到 cloudwatch,lambda 从 cloudwatch 读取并根据需要启动新任务,或者如果任务计数太高则终止具有最低 CPU 的任务。它非常 hacky 但它有效,并且由于没有官方方法可以使用 fargate 执行此操作,唯一的其他选择是切换到 K8s

之类的东西