- 最新
- 投票最多
- 评论最多
【以下的回答经过翻译处理】 如果您在容器中运行应用程序,但具有应用程序和主机的1对1映射的要求,其实在主机上直接运行应用程序更合适,而不是使用容器层,并使用像“ code-deploy”这样的工具来完成版本控制等功能。
但是,如果您想坚持使用容器,我也认为是用K8s的方案偏重,使用ECS则比较合适。
您可以在ECS中创建一个容量提供者(Capacity Provider),该容量提供者将使用ASG,该ASG本身将使用启动模板。在该启动模板中,您可以预定义所需的EBS挂载,根据需要进行脚本连接,如果您的磁盘需要与EC2实例分别保留,则设置容量提供程序的ECS服务为仅使用该容量提供程序。否则,如果您愿意与其他工作负载共享主机,则可以定义放置策略或仅使用“ DAEMON”模式,该模式将在每个主机上运行1个容器,且仅运行一个。
另外,如果您需要这些EBS磁盘的主要原因是IOps,并且没有巨大的存储(>200GB),那么您可以通过在AWS Fargate上每个主机运行1个任务来实现。在fargate中,您可以免费获得21GB的NVMe驱动器,并且您可以提高到200GB。您不需要支付这些IOPS的费用,但您可能需要支付使用的GP2 / GP3或IO EBS磁盘的费用。
如果需要持久性的磁盘超出容器的寿命,那么EC2就是您唯一的选择。 EFS可能无法提供您需要的性能。
至于如何执行所有这些操作,考虑到您使用了 docker-compose,我建议您保留它。它非常知名,对开发人员友好,并且有一些工具可以使从 "compose 到 ECS" 的部署变得容易,例如 ECS Compose-X。
尽管我还没有像您这样的使用案例提交,但如果您愿意,可以在 Slack 上与我联系,以查看如何修改您的 compose 文件以简化部署,并将其添加到我的测试案例中 :)
以下两个文档供您参考:
[x-ecs.CapacityProviders](https://docs.compose-x.io/syntax/compose_x/ecs.details/ecs.html#capacityproviderstrategy) Fargate 临时存储(如果计划使用 Fargate)。
相关内容
- AWS 官方已更新 1 年前
- AWS 官方已更新 2 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前