ECS下Fargate Spot的模拟测试及容量不可用相关问题咨询
ECS Fargate与容量提供者常见问题解答
1. Fargate Spot容量不可用时的运行表现
根据你描述的「基础6个任务走标准Fargate,超出部分走Fargate Spot」的容量提供者配置,当Fargate Spot容量不足时会出现两种情况:
- 新增调度的超出6个的任务会长期处于
PROVISIONING状态,ECS服务调度器会按照默认重试逻辑持续尝试申请Spot容量,不会自动切换到标准Fargate调度,直到Spot容量释放或你手动调整调度规则 - 正在运行的Fargate Spot任务如果遇到AWS主动回收容量,你会提前2分钟收到Spot中断通知,任务被终止后调度器依然会优先尝试重新申请Spot容量启动新任务,申请失败同样会进入 pending 状态
2. 容量提供者无故障转移机制的说法是否准确
该说法完全准确。
ECS容量提供者的调度规则是静态配置的,平台本身没有内置跨容量提供者的故障转移逻辑,某一容量提供者无可用容量时,不会自动将任务调度到集群内的其他容量提供者。如果需要实现故障转移效果,需要自行开发逻辑:监听CloudWatch的任务启动失败、Spot中断等事件,动态修改容量提供者的权重、base值,将任务切换到标准Fargate等其他容量提供者。
3. 模拟Fargate Spot容量不足的测试方法
有三种常用的无额外成本的模拟方式:
- 任务放置约束模拟:给测试服务添加
attribute:ecs.capacity-provider.name == invalid-spot-provider的自定义放置约束,强制所有走Fargate Spot的任务因匹配不到调度目标失败,完全模拟容量不足的调度表现 - 配额限制模拟:通过
aws ecs put-account-setting临时调低你账号对应区域的Fargate Spot任务运行配额,调高测试服务的副本数触发配额不足,测试完成后再把配额改回正常值即可 - 中断事件模拟:自行构造符合Fargate Spot中断通知格式的CloudWatch事件,通过
aws events put-events命令推送事件,模拟运行中Spot任务被回收的场景,验证服务的容错逻辑
内容的提问来源于stack exchange,提问作者Alex Bailey
相关产品推荐
相关产品推荐

