У мене в офісі працює невеликий докерський рій: один 40-ядерний (128 ГБ оперативної пам’яті) та два 8-ядерних (16 ГБ оперативної пам’яті кожен). Коли я розгортаю службу через рій, завдання виконуються, але вони розподіляються рівномірно, не зважаючи на потужність машини.
Я розпочав рій на менеджера з:
docker swarm init
docker swarm update --task-history-limit 2
і на кожному вузлі:
docker swarm join --token <token-string> <ipaddr:port>
Потім я запускаю послугу з:
docker service create --detach \
--mount type=bind,src=/s/mypath,dst=/home/mypath \
--entrypoint "/home/mypath/myscript.sh arg1 arg2" \
--name "mystuff" -w /home/mypath myregistry.me.com:5433/myimage
Процес працює індивідуально. Я не знайшов вказівки на присвоєння ваги чи спорідненості на основі сили вузла.
В ідеалі я хотів би мати можливість сказати щось подібне до цього:
- приєднуйся до роя, приймай не більше ніж
n
завдання (трохи наївно) - приєднуйся до рою, зважи мою (процесорну) ємність
0.2
(або5
на більших) - запустіть цю послугу, призначте не більше одного завдання на доступне ядро
Я саморегулюю загальний масштаб послуги docker service scale
, але це не дає ніякої деталізації. Чи можна регулювати послуги рій докера на вузол за наявними ресурсами?
(Це може бути ще більш стимулом для переходу на k8s, який, я припускаю, забезпечує функціональність у цих напрямках. Зростаюча біль у навчанні та перехід, який я жорстко озброював.)