Docker 1.12 Swarm Service Внешний IP-адрес

Kubernetes позволяет создавать внешние IP-адреса для сервисов. В Docker Swarm можно ли установить конечную точку для каждой службы отдельно от IP-адреса узла?

Например:

  node1  192.168.1.22
  node2. 192.168.1.23

Моя служба будет:

  myweb1  192.168.1.101. 80

Таким образом, у меня будут задачи, работающие на каждом узле, но служба будет доступна по адресу http://192.168.1.101.


person Ken J    schedule 10.09.2016    source источник


Ответы (1)


Вы не можете. Служба в режиме Swarm может быть назначена только сети Overlay, поэтому служба не может быть открыта для сети хостов без какого-либо моста (например, с помощью опции --publish).

Обратите внимание, что внутренне (внутри сети Overlay) Swarm выделяет IP-адрес для каждой службы, независимо от того, на каких узлах она работает.

person Bernard    schedule 10.09.2016
comment
Итак, может ли служба в мостовой сети получить IP-адрес в общедоступной сети? - person Ken J; 10.09.2016
comment
Нет, ты не можешь. Вам нужно, чтобы служба совместно использовала хост-сеть, чтобы получить отдельный общедоступный IP-адрес, и это не поддерживается, хотя я просто вижу, что это запрошенная функция github.com/docker/swarmkit/issues/989 Почему вы хотите, чтобы IP-адреса служб были видны за пределами узлов? Обычно у вас есть внешний балансировщик нагрузки, который отправляет трафик на один из узлов, после чего рой перенаправляет трафик на правильный трафик. Если вы экспортируете службу через определенный порт --publish 8080:80, то служба будет доступна с любого узла на этом порту. - person Bernard; 11.09.2016
comment
@Alkaline, я только что увидел твой комментарий к твоему ответу. То, что --publish ‹TARGET-PORT›:‹SERVICE-PORT›, безусловно, является билетом, и то, что сервис доступен с любого узла на ‹TARGET-PORT›, просто великолепен. Я удалил свой избыточный ответ, увидев это. - person Chris Townsend; 24.09.2016