Докер Рой не распределяет контейнер в кластере - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть два сервера для использования в Docker-кластере Swarm (только для тестирования), один - «Менеджер», а другой - «Рабочий», но при выполнении команды docker stack deploy --compose-file docker-compose.yml teste2 все службы запускаются в диспетчере, а работник не получает контейнеры для запуска, по какой-то причине Swarm не выполняет распределение служб в кластере и не запускает все на сервере управления.

Будет ли мой docker-compose.yml причиной проблемы или это может быть проблема с сетью?

Вот некоторые настройки:

  • Серверы CentOs 7, Docker версия 18.09.4;
  • Я выполнил команды systemctl stop firewalld && systemctl disable firewalld для отключения брандмауэра;
  • Я выполнил команду docker swarm join --token ... на рабочем месте;
  • Результат docker node ls:

    ID                            HOSTNAME               STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
    993dko0vu6vlxjc0pyecrjeh0 *   name.server.manager    Ready               Active              Leader              18.09.4
    2fn36s94wjnu3nei75ymeuitr     name.server.worker     Ready               Active                                  18.09.4
    
  • Файл docker-compose.yml:

    version: "3"
    services:
      web:
            image: testehello
            deploy:
              replicas: 5
              update_config:
                    parallelism: 2
                    delay: 10s
              restart_policy:
                    condition: on-failure
              # placement:
                    # constraints: [node.role == worker]
            ports:
              - 4000:80
            networks:
              - webnet
    
      visualizer:
            image: dockersamples/visualizer:stable
            ports:
              - 8080:8080
            stop_grace_period: 1m30s
            volumes:
              - "/var/run/docker.sock:/var/run/docker.sock"
            deploy:
              placement:
                    constraints: [node.role == manager]
    
    networks:
      webnet:
    
  • Я выполнил команду docker stack deploy --compose-file docker-compose.yml teste2

В docker-compose.yml я прокомментировал параметры размещение и ограничения , потому что они не работали и не запускали контейнеры на серверах, без этого контейнеры запускались в менеджере. Через визуализатор все появляются в диспетчере.

1 Ответ

0 голосов
/ 02 апреля 2019

Сначала попробуйте развернуть без опции обновления, например:

version: "3.2"

services:
    web:
        image: testehello
        networks:
            - webnet
        deploy:
            mode: replicated
            replicas: 2
            placement:
                constraints: [node.role == worker]
        restart: unless-stopped
        logging:
            options:
                max-size: 1m

networks:
    webnet:
        external: true

Далее попробуйте добавить опцию обновления:

version: "3.2"

services:
    web:
        image: testehello
        networks:
            - webnet
        deploy:
            mode: replicated
            replicas: 2
            placement:
                constraints: [node.role == worker]
        update_config:
            parallelism: 1
            delay: 10s
        restart: unless-stopped
        logging:
            options:
                max-size: 1m

networks:
    webnet:
        external: true
...