У мене в офісі працює невеликий докерський рій: один 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, який, я припускаю, забезпечує функціональність у цих напрямках. Зростаюча біль у навчанні та перехід, який я жорстко озброював.)