Могу ли я назначить ядра для контейнеров Docker Swarm? - PullRequest
0 голосов
/ 24 августа 2018

Я развертываю файл стека с несколькими службами (каждая служба имеет только одну реплику), и мне нужно ограничить каждый контейнер для использования различных подмножеств ядер ЦП. здесь я обнаружил, что cpuset не поддерживается стековым файлом роя (compose v3).Я пробовал ограничение процессора, но это будет указывать только процент ресурсов процессора, а не ядер.Есть ли способ обойти это дело?Мне нужно назначение ядер для поддержки лицензионных ограничений программного обеспечения.

Ответы [ 2 ]

0 голосов
/ 18 сентября 2018

К сожалению, и, как вы уже узнали, нет способа (пока) ограничить задачу определенным ядром или группой ядер, работающих в режиме роя со стеками и / или службами.

Разумный вариант будетбыть вручную запускать эти контейнеры на машинах, на которых вы хотите их запускать, минуя Swarm в процессе.Таким образом, используя ваши машины в качестве "старых добрых" docker-демонов и используя флаг --cpuset-cpus.

Единственный улов в том, что контейнеры по умолчанию получают доступ ко всем процессорам , если толькоограничено указанным выше флагом для одного контейнера.Таким образом, вы должны быть осторожны и исключить эти узлы из вашего Swarm, в противном случае он будет планировать контейнеры и использовать те ядра, которые вы хотите ограничить для вашего лицензионного программного обеспечения.

Другой вариант - запустить старый Swarm., который поддерживает флаг --cpuset-cpus.Таким образом, вы можете запустить старый Swarm поверх своего парка докеров, управляемого в режиме Swarm.Просто убедитесь, что машины, на которых размещены ваши закрепленные контейнеры и контейнеры с ограничением ЦП, не доступны в режиме Swarm, например, можно использовать следующую опцию:

                        +-------------+
                        | Swarm Mode  |
       +----------------+   Primary   |
       |                |             |
       |                +------+------+
       |                       |
       |                       |
       |                       |                       +----------------+
       |                       |                       |  Containers    |
       |                       |                       |  with          |
       |                       |                       |  pinned cores  |
+------v------+         +------v------+         +------+------+---------+
|             |         |             |         |             |
|   Agent     |         |   Agent     |         |   Agent     |
|             |         |             |         |             |
+------+------+         +------^------+         +------^------+
       ^                       |                       |
       |                       |                       |
       |                       |                       |
       |                       |                       |
       |                       |                       |
       |                       |                       |
       |                +------+------+                |
       |                |   Swarm     |                |
       +----------------+  Primary    +----------------+
                        |             |
                        +-------------+

В заключение, разумного обходного пути на данный момент не существуетиспользуя только режим Docker Swarm.Возможно, со временем еще появится надежда увидеть эту землю в будущем.

0 голосов
/ 27 августа 2018

Да, вы можете ограничить доли процессора. например:

docker service create --limit-cpu 2 nginx
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...