Swarm 上的主机网络:服务发现以及与其他服务的通信

问题描述 投票:0回答:1

我一直在使用 Docker Swarm,并遇到了有关服务发现的问题。具体来说,我的一项服务正在利用“主机网络”,并且我从有关 GitHub 问题 的讨论中了解到,我无法同时将我的服务包含在覆盖网络中。

这种情况给我造成了重大障碍,因为它阻止了 Docker Swarm 的 DNSRR 功能的使用。以前,我利用 DNSRR 进行服务发现,特别是识别活动任务的 IP。我正在寻找一种解决方案或功能,允许我查询当前在服务下运行的所有任务,包括它们的私有和/或公共 IP。

此外,当我的服务连接到覆盖网络时,我能够使用其他服务的 DNS 名称直接访问它们。然而,现在我的服务不再是覆盖网络的一部分,我不得不使用私有 IP,这并不是最佳选择。

有人可以为我指出解决这些挑战的解决方案或解决方法吗?任何建议或见解将不胜感激。

预先感谢您的帮助。

我尝试将我的服务添加到覆盖网络中,但失败了

docker networking docker-compose docker-swarm docker-networking
1个回答
0
投票

由于 Docker Swarm 的限制,您无法同时拥有

host
和另一个网络。假设您有
traefik
,您可以执行以下操作。

运行两项服务:

  1. traefik
    用于外部

    a.在主机模式网络上运行并侦听端口 80/443。

    b.它仅在主机网络上

    c.我假设您需要重新路由,以便 HTTP 转到 HTTPS d.将 HTTPS 路由到其他 traefik

  2. traefik
    用于 Docker 群覆盖

    a.在覆盖网络上运行

    b.从

    external-traefik

    获取真实IP

    c.暴露在不同的端口上,例如

    8443

© www.soinside.com 2019 - 2024. All rights reserved.