AWS ECS实例空间不足

时间:2019-04-15 11:06:34

标签: amazon-web-services amazon-ecs

从今天早上开始,我在更新AWS ECS中的服务时遇到了麻烦。任务无法启动。失败的任务显示此错误:

  

打开/var/lib/docker/devicemapper/metadata/.tmp928855886:设备上没有剩余空间

我已经检查了磁盘空间,并且有。

  

/ dev / nvme0n1p1 7,8G 5,6G 2,2G 73%/

然后我检查了inode的使用情况,发现使用了100%:

  

/ dev / nvme0n1p1 524288 524288 0 100%/

缩小搜索范围,我发现Docker卷是使用inode的卷。

我正在使用标准的Centos AMI。

这是否意味着在ECS群集上可以运行的服务数量最大? (目前我正在运行18个服务)

这可以解决吗?目前,我无法进行更新。

预先感谢

1 个答案:

答案 0 :(得分:1)

您需要在EC2主机上调整以下环境变量:

  • ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION
  • ECS_IMAGE_CLEANUP_INTERVAL
  • ECS_IMAGE_MINIMUM_CLEANUP_AGE
  • ECS_NUM_IMAGES_DELETE_PER_CYCLE

您可以在以下所有设置中找到完整的文档:https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-agent-config.html

默认行为是每30分钟检查一次,并且仅删除5个超过1小时且未使用的图像。如果您想更频繁地清理更多图像,可以使这种行为更具攻击性。

要节省空间的另一件事是不要将图像层挤压在一起,而是针对不同的图像和图像版本使用一个公共的共享基础图像层。这会产生巨大的差异,因为如果您有10个不同的图像,每个图像的大小均为1 GB,则将占用10 GB的空间。但是,如果您只有一个1 GB的基本映像层,然后有10个小型应用程序层,它们的大小只有几MB,则仅占用了略大于1 GB的磁盘空间。