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