В моем офисе работает небольшой док-рой: один 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задачи (немного наивно) - присоединяйся к рою, веси мою (cpu-) мощность как
0.2(или же5на более крупные) - Запустите эту службу, назначьте не более одной задачи для каждого доступного ядра
Я саморегулируем общий масштаб обслуживания с docker service scale, но это не обеспечивает никакой детализации. Можно ли регулировать службы Docker Swarm для каждого узла доступными ресурсами?
(Это может быть еще большим стимулом для перехода на k8s, который, как я полагаю, обеспечивает функциональность в этом направлении. Есть трудности с обучением и переходом, который я усердно готовил.)