【问题标题】:AWS ECS: increase container root volume size, not data volume sizeAWS ECS:增加容器根卷大小,而不是数据卷大小
【发布时间】:2021-08-28 11:02:35
【问题描述】:

我需要相当多的 RAM 和磁盘用于 Docker 容器,该容器将不经常作为 ECS 上的任务运行。我的工作流程:

  1. 为 ECS 启动 EC2 实例
  2. 在 ECS 上运行任务
  3. 终止 EC2 实例

我在运行之间终止实例,因为这些资源相对昂贵,并且我不希望它们在不使用时运行。由于资源限制,Fargate 不合适,所以我在 EC2 上运行 ECS。

如果没有大量人工干预,我无法为图像获得超过 30GB 的磁盘。我可以附加任意 EBS data 卷 (/dev/xvdcz),但 AWS 仍然始终创建一个 30GB root/dev/xvda,用于容器本身。

如何为 Docker 容器本身使用大于 30GB 的卷?

我尝试过的:

  1. 使用根卷较大的启动配置创建 Auto Scaling 组。这确实会创建一个具有更大根卷的实例,但无法将此组附加到集群,或将其创建的 EC2 实例与集群链接。集群创建似乎与 Auto Scaling 组和实例相关联。
  2. 使用具有大型专用 SSD 而不是 EBS 卷的实例,再次为容器创建 30GB 分区。
  3. dev/xvdcz 安装到容器上。这确实增加了空间,但需要我重写我的代码以仅使用此文件夹。
  4. 创建后使用 AWS ECS cli 修改磁盘。这在a similar issue 中有描述。但是,由于我的 EC2 实例在任务完成后终止,ID 不会在运行之间持续存在,并且aws ecs describe-clusters 没有指定底层 EC2 实例,因此无法自动执行此操作。人工需要启动实例,查看 ID,然后可以通过 CLI 修改卷大小。

This issue was brought up on Github back in 2016 但标记为不重要并已关闭,那里的讨论没有多大帮助。

【问题讨论】:

    标签: amazon-web-services docker amazon-ec2 amazon-ecs


    【解决方案1】:
    1. 在 EC2 > Auto Scaling 下,使用具有您选择的根卷大小的启动配置创建一个新的 Auto Scaling 组。这将默认启动一个 EC2 实例,暂时不要使用它。
    2. 转到集群的自动创建的 Auto Scaling 组,记下名称(稍后需要),然后单击启动模板 > 编辑。如果显示“启动配置”,请按“切换到启动模板”。
    3. 选择您之前创建的 Auto Scaling Group 的模板(注意如果您创建了多个版本,请选择最新的,默认选择版本 1)。选择“坚持启动模板”并点击“更新”。
    4. 删除您首先创建的 Auto Scaling 组。这将关闭其相关的 EC2 实例。
    5. 重启集群的 ec2 实例:
      aws autoscaling set-desired-capacity --auto-scaling-group-name NAME_OF_GROUP --desired-capacity 0
      
      等待它关闭,您可以在 EC2 控制台中看到实例状态。
      aws autoscaling set-desired-capacity --auto-scaling-group-name NAME_OF_GROUP --desired-capacity 1
      
      再次等待它启动。启动后,对于任何后续启动,/dev/xvda 将是您指定的大小。

    【讨论】:

      猜你喜欢
      • 2021-09-28
      • 2012-06-16
      • 2022-06-10
      • 2018-05-22
      • 2020-09-25
      • 1970-01-01
      • 1970-01-01
      • 2011-04-21
      • 1970-01-01
      相关资源
      最近更新 更多