AWS 上的单容器作业

AWS 上的单容器作业

我们希望在 AWS 上以版本控制和记录的方式启动单个 Docker 容器任务 - 但采用临时方式。每个容器任务都需要大量 vCPU 和 RAM(可能是 16 个 vCPU 和 64GB RAM)。

我看到有几种服务可能有助于解决这个问题,但没有一种是理想的;

  1. CloudFormation + EC2:在实例(以及 VPC 等)上启动、配置和执行容器
  2. (很好,但我们不需要并行容器)
  3. Fargate(很棒,但仅限于 4 个 vCPU 和 30GB RAM)
  4. ElasticBeanstalk(单容器环境)该任务不是 Web 应用程序,因此不需要负载均衡器等。

有人可以提供类似工作负载的经验吗?我是否遗漏了一些明显的服务?

答案1

使用云形成设置每次需要运行时,都会以一致、可重复的方式进行。CloudFormation 模板将创建:

  • ECS 集群
  • EC2 实例加入 ECS 集群(单个实例或自动伸缩组)
  • ECS任务定义容器 URL 可以作为模板的参数
  • 任何支持资源 -IAM 角色安全组, ETC。

然后你可以有一个简单的shell 脚本或者ansible 剧本这将从 CloudFormation 模板创建堆栈并触发任务运行。然后等待它完成并拆除再次使用堆栈,这样您就不会为闲置资源付费。如果您需要运行任务(例如每天早上),则可以使用CloudWatch 事件规则定期触发它。

如果要运行的容器需要不时从源代码重建,您还可以设置CI/CD 管道使用代码管道CodeBuild等,每次更改代码时,它都会以一致的方式重建容器。

希望有帮助:)

答案2

尝试 terraform + ecs。简单又方便

相关内容