内容提要
在基于Terraform在AWS ECS中构建Jenkins持续集成体系一文中,作者使用EFS作为Jenkins容器的数据卷,但遇到了IO性能问题。现在AWS ECS的Fargate支持使用EBS卷作为Volume,需要提供一个ECS infrastructure IAM role。在Volume配置中选择"Configure at deployment",并选择前面创建的role。当前的ECS使用EBS Volume,与ECS task生命周期一致,不支持挂载已有的EBS,但支持从Snapshot创建EBS。
延伸解读
EFS 性能瓶颈与 EBS 的引入
文章指出,使用 EFS 作为 Jenkins 容器的数据卷时,bursting 模式在构建任务启动时容易因大量 IO 操作耗尽 Credit,导致 master 节点挂掉。Provisioning 模式虽能缓解性能问题,但价格昂贵,性价比不高。因此,AWS ECS Fargate 从 2024 年 1 月开始支持 EBS 卷,为需要高性能存储的场景提供了新选择。
EBS 卷的配置要点
要使用 EBS 作为 ECS 数据卷,需为 ECS task 提供 ECS infrastructure IAM role,该角色与 task execution role 和 task role 不同,专门用于允许 ECS 管理 EBS。在 Volume 配置中,需将 Configuration type 改为 Configure at deployment,并在更新 ECS 服务时选择该 infrastructure role,否则可能出现权限问题。
EBS 卷的生命周期与限制
当前 ECS 使用的 EBS 卷生命周期与 ECS task 一致,task 停止时 EBS 会被销毁,且不支持挂载已有的 EBS。但支持从 Snapshot 创建 EBS,因此建议为 EBS 创建快照策略以保留数据。此外,Terraform 的 AWS 官方 provider 目前还不支持这种配置,需关注后续更新。
Q&A
AWS ECS Fargate支持使用EBS卷的时间是什么时候?
AWS ECS的Fargate从2024年1月开始支持使用EBS卷作为Volume。
使用EBS作为ECS数据卷需要哪些IAM角色?
需要为ECS task提供一个ECS infrastructure IAM role,以允许ECS管理EBS。
在ECS中配置EBS卷时需要注意哪些设置?
在Volume配置中,'Configuration type'需要修改为'Configure at deployment',并选择创建的'infrastructure role'。
ECS使用的EBS卷在什么情况下会被销毁?
ECS使用的EBS Volume生命周期与ECS task一致,停止task时EBS会被销毁。
ECS是否支持挂载已有的EBS卷?
当前ECS不支持挂载已有的EBS,但支持从Snapshot创建EBS。
Terraform的AWS官方provider是否支持EBS配置?
Terraform的AWS官方provider目前不支持EBS配置。