Основна стаття з docker node update
тут
Для прикладу у нас є 3 ноди:
SRV-APP-DCR31
SRV-APP-DCR32
SRV-APP-DCR33
За можна додати тільки на 1 ноду
docker node update --label-add POOL1=true SRV-APP-DCR32
docker node update --label-add POOL1=true SRV-APP-DCR33
docker node inspect --format '{{ .Spec.Labels }}' SRV-APP-DCR33
docker node update --label-rm POOL2 SRV-APP-DCR31
max_replicas_per_node: 1
- обмежує кількість реплік на одній ноді
Параметр вище працює з версії 3.8
replicas: 2
- всього кількість реплік для сервісу nginx
constraints: [node.labels.POOL2 == true]
- обмеження на яких нодах та з яким тегом запускати сервіс.
version: "3.9"
services:
nginx:
image: nginx:latest
ports: ["3333:80"]
deploy:
replicas: 2
placement:
max_replicas_per_node: 1
constraints: [node.labels.POOL1 == true]
або ось так:
version: "3.9"
services:
nginx:
image: nginx:latest
ports: ["3333:80"]
deploy:
replicas: 2
placement:
max_replicas_per_node: 1
constraints:
- node.labels.POOL2 == true
також можна обмежувати через node.role
яка може набувати значення worker
або manager
Роль worker вибираємо коли більше двох реплік необхідно розмістити.
version "3.9"
services:
foo:
image: hello-world
deploy:
replicas: 2
placement:
max_replicas_per_node: 1
constraints:
- node.role==worker