Установка ulimit в AWS ECS: HardLimit не может быть пустым - PullRequest
0 голосов
/ 05 июля 2019

На основании инструкций в официальной документации и официальном докере image Я запускаю Elasticsearch локально с этими конфигурациями через docker compose:

elasticsearch:
  image: 'elasticsearch:6.7.1'
  container_name: elasticsearch
  environment:
    - cluster.name=docker-cluster
    - bootstrap.memory_lock=true
    - "ES_JAVA_OPTS=-Xms512m -Xmx512m"
  ulimits:
    memlock:
      soft: -1
      hard: -1
  volumes:
    - esdata1:/usr/share/elasticsearch/data
  ports:
    - 9200:9200

С этимуспешно работает локально, сейчас я изучаю запуск этого в AWS ECS как в конфигурации EC2, так и в конфигурации Fargate.Тем не менее, я создал шаблон Cloudformation, который имеет TaskDefinition , который имеет ContainerDefinition для Elasticsearch, который выглядит следующим образом:

ContainerDefinition:
  - Name: 'elasticsearch'
      Image: 'elasticsearch:6.7.1'
      LogConfiguration:
        LogDriver: awslogs
        Options:
          awslogs-group: !Ref 'LogGroup'
          awslogs-region: 'us-west-2'
          awslogs-stream-prefix: !Sub 'elasticsearch'
      Environment:
      - Name: cluster.name
        Value: 'docker-cluster'
      - Name: bootstrap.memory_lock
        Value: 'true'
      - Name: ES_JAVA_OPTS
        Value: '-Xms512m -Xmx512m'
      Cpu: '1024'
      Memory: '4096'
      Ulimits:
      - Name: 'memlock'
      - SoftLimit: -1
      - HardLimit: -1
      MountPoints:
      - SourceVolume: esdata1
        ContainerPath: /usr/share/elasticsearch/data
      PortMappings:
      - HostPort: '9200'
        ContainerPort: '9200'

Запуск создания моего стека Cloudformationс этим шаблоном возникает следующая ошибка Cloudformation:

CREATE_FAILED   AWS::ECS::TaskDefinition    TaskDefinition  Property HardLimit cannot be empty.

Когда я закомментирую следующий фрагмент конфигурации:

  Ulimits:
  - Name: 'memlock'
  - SoftLimit: -1
  - HardLimit: -1

и запусту создание моего стека Cloudformation, все на Cloudformationперспектива успешна и ошибок не обнаружено, что говорит мне о том, что помимо конфигурации Ulimits у меня все должно быть хорошо.Оттуда я взглянул на документацию AWS Cloudformation ContainerDefinition , в которой упоминается следующее о конфигурации Ulimits:

Для этого параметра требуется версия Docker 1.18Удаленный API или более поздней версии для вашего экземпляра контейнера.

Я не уверен, почему я получаю эту ошибку HardLimit cannot be empty., но мне было интересно, связано ли это с контейнером, нуждающимся в Docker Remote API.Я немного запутался в этом вопросе, но если у кого-то есть какая-либо информация о том, как получить эту работу, хотел бы услышать об этом.Мои знания Docker Remote API не так велики, и, возможно, эта ошибка вообще не имеет к этому никакого отношения.Иногда сообщения об ошибках Cloudformation не совсем понятны, просто я пытаюсь обойти эту проблему, поэтому выкидываю всю полученную информацию.Спасибо

...