【发布时间】:2021-10-02 09:56:15
【问题描述】:
我使用 terraform 管理我们的 ECS 任务,一切都很好,但最近,当任务尝试从 ECR 获取图像时,我遇到了这个错误:
CannotPullContainerError: failed to register layer: devmapper: Thin Pool has 4143 free data blocks which is less than minimum required 4449 free data blocks. Create more free space in thin pool or use dm.min_free_space option to change behavior
我对要更新的内容有点困惑。我们的 ECS 服务使用 EC2 启动类型,但我认为我对这里发生的事情有一个根本的误解。阅读 https://docs.aws.amazon.com/AmazonECS/latest/developerguide/CannotCreateContainerError.html 似乎是因为体积太小,但 AWS 帮助页面建议 docker prune。这让我感到困惑,因为我的理解是 ECS 任务每次都可以访问整个卷作为新的开始——为什么卷上会有陈旧的图像/容器?还是该页面只是建议在您的 ECS 任务可能获取过多图像的情况下,您应该删除过时的图像。
除此之外,我不确定如何继续。会在此处增加aws_ecs_task_definition 帮助中的ephemeral_storage,还是我需要管理我自己的卷,该卷附加到aws_launch_template 实例,该实例与aws_autoscaling_group 相关联,而aws_autoscaling_group 与相关aws_ecs_service 相关联
【问题讨论】:
-
后者,
aws_launch_template。我不知道现在情况如何,但 ECS 过去常常不清除以前任务中的缓存图像 -
“据我了解,ECS 任务每次都可以访问整个卷作为新的开始” 每个 ECS 任务部署都不会触发创建新的 EC2 实例。因此,在多次部署 ECS 任务后,EC2 实例可能会由于 Docker 映像缓存而耗尽磁盘空间。您可以切换到 Fargate 以消除此问题。
-
说得通——非常感谢您的帮助!我添加了一个扩展的音量,尽管我认为这是一个便宜的解决方法。不幸的是,由于特定的 ec2 实例要求,我无法使用 fargate
标签: amazon-web-services terraform amazon-ecs