В моем офисе работает небольшой док-рой: один 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, который, как я полагаю, обеспечивает функциональность в этом направлении. Есть трудности с обучением и переходом, который я усердно готовил.)