Docker Swarm Deploy игнорирует ограничения размещения - PullRequest
1 голос
/ 05 июля 2019

Так что у меня проблема с compose version 3.6 и развертыванием сервисов swarm.То, чего я пытаюсь добиться, это развернуть только службу A или B в зависимости от значения метки, примененного к узлу.Происходит то, что обе службы развертываются (или одна, а вторая не работает из-за использования порта).

 serviceA:
    image: serviceA:v1
    deploy:
      mode: global
      restart_policy:
        condition: on-failure
      placement:
        constraints:
          - node.labels.faces == cpu
    networks:
      - mynet
    ports:
      - "8888:8888"

  serviceB:
    image: serviceB:v1
    deploy:
      mode: global
      restart_policy:
        condition: on-failure
      placement:
        constraints:
          - node.labels.faces == gpu
    networks:
      - mynet
    ports:
      - "8888:8888"

На моем отдельном узле я определил метку следующим образом

# docker node inspect swarm-manager --pretty
ID:         0cpco8658ap5xxvxxblpqggpq
Labels:
 - faces=cpu
Hostname:               swarm-manager

Возможна ли эта конфигурация?Должен быть создан только сервис с соответствующей меткой.

Я хочу использовать глобальный вместо реплицированного, потому что мы добавляем дополнительные узлы автоматически, не переходя к мастеру, но я прочитал на другом форуме, что эти два могут не бытьсовместимо.

Однако, если я создаю все вручную, используя CLI, он работает как положено

docker node update --label-add faces=cpu swarm-manager
docker service create -d --name serviceA --constraint node.labels.faces==cpu -p 8888 --mode global  serviceA:v1
docker service create -d --name serviceB --constraint node.labels.faces==gpu -p 8888 --mode global serviceB:v1

# docker service ls | grep service
c30y50ez605p        serviceA       global              1/1                 service:v1   *:30009->8888/tcp
uxjw41v42vzh        serviceB   global              0/0                 serviceB:v1          *:30010->8888/tcp

Вы можете видеть, что служба, созданная с ограничением ЦП, работала и служба с GPU не была создана (в состоянии ожидания).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...