Передать ulimit в dockerd

Я новичок в kubernetes и пытаюсь развернуть на нем elasticsearch. В настоящее время у меня проблема с количеством файловых дескрипторов, необходимых для elasticsearch и разрешенных докером.

[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]

Итак, чтобы исправить это, я пробовал 3 разных способа:

способ 1

Из документации по докеру dockerd должен использовать системное значение в качестве значения по умолчанию.

  1. установить /etc/security/limits.conf с * - nofile 65536
  2. перезагрузка
  3. выполнить ulimit -Hn && ulimit -Sn return return 65536 дважды
  4. выполнить docker run --rm centos:7 /bin/bash -c 'ulimit -Hn && ulimit -Sn' (должно дважды вернуть 65536, но нет, вернуть 4096 и 1024)

способ 2

  1. добавить --default-ulimit nofile=65536:65536 к /var/snap/microk8s/current/args/dockerd
  2. перезагрузка
  3. выполнить docker run --rm centos:7 /bin/bash -c 'ulimit -Hn && ulimit -Sn' (должно дважды возвращать 65536, но не возвращать 4096 и 1024)

способ 3

  1. добавлять

    «default-ulimit»: { «nofile»: { «Name»: «nofile», «Hard»: «65536», «Soft»: «65536» } }

    to /var/snap/microk8s/354/args/docker-daemon.json

  2. выполнить systemctl restart snap.microk8s.daemon-docker.service
  3. выполнить journalctl -u snap.microk8s.daemon-docker.service -f вернет unable to configure the Docker daemon with file /var/snap/microk8s/354/args/docker-daemon.json: the following directives don't match any configuration option: nofile

Единственный способ, который я нашел для установки ulimit, — это передать --ulimit nofile=65536:65536 команде запуска докера. Но я не могу сделать это внутри моей конфигурации kubernetes statefullset.

Итак, вы знаете, как я могу решить эту проблему? Я не сделал что-то не так здесь?

Заранее спасибо за вашу помощь

ps: я на Ubuntu 18.0.1 с докером 18.06.1-ce и microk8s, установленным с помощью оснастки


person David    schedule 04.01.2019    source источник
comment
вы не используете изображения ELK? Я думал, что у них уже есть правильный ulimit   -  person Mysterion    schedule 04.01.2019
comment
Да, я пробовал с docker.elastic.co/elasticsearch/elasticsearch-oss:6.5.4, а также с диаграммой helm от elastic. и официальный. И со всеми у меня такая же беда....   -  person David    schedule 04.01.2019


Ответы (1)


Немного поздно, но если у кого-то тоже есть эта проблема, вы можете добавить эту строку в /var/snap/microk8s/current/args/containerd-env:

ulimit -n 65536

Затем остановите/запустите microk8s, чтобы включить это исправление. Если вы выполните команду docker run --rm centos:7 /bin/bash -c 'ulimit -Hn && ulimit -Sn', вы увидите 65536 дважды

Дополнительная информация о проблеме Microk8s Github #253. В Microk8s есть исправление слияния для этого, возможно, оно скоро будет доступно в выпуске.

person Starfight    schedule 15.07.2019