экземпляры aws ecs заканчиваются - PullRequest
0 голосов
/ 15 апреля 2019

С этого утра у меня проблемы с обновлением сервисов в AWS ECS. Задачи не запускаются. Неудачные задачи показывают эту ошибку:

открыть /var/lib/docker/devicemapper/metadata/.tmp928855886: на устройстве не осталось места

Я проверил место на диске и есть.

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

Затем я проверил использование инодов и обнаружил, что используется 100%:

/ dev / nvme0n1p1 524288 524288 0 100% /

Сужая поиск, я обнаружил, что тома Docker - это те, которые используют иноды.

Я использую стандартную Centos AMI.

Означает ли это, что существует максимальное количество служб, которые могут работать в кластере ECS? (в данный момент у меня 18 служб)

Это можно решить? В данный момент я не могу делать обновления.

Заранее спасибо

1 Ответ

1 голос
/ 16 апреля 2019

Вам необходимо настроить следующие переменные среды на хостах 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 ГБ, занимающий 10 ГБ пространства. Но если у вас один базовый слой изображений размером 1 ГБ, а затем 10 небольших прикладных слоев размером всего несколько МБ, занимающих чуть более 1 ГБ дискового пространства.

...