Docker群模式路由网格不工作

标签 docker docker-swarm

当我使用 swarm 部署服务时:

docker service create --replicas 1 --publish published=80,target=80 tutum/hello-world

我只能从运行容器的节点的 ip 访问服务。如果我扩展服务以在两个节点上运行,我可以从两个 ip 访问该服务,但它永远不会从另一个节点上的容器运行。 (由 tutum/hello-world 图像确认)。

documentation建议负载平衡在它说时应该起作用:

Three tasks will run on up to three nodes. You don’t need to know which nodes are running the tasks; connecting to port 8080 on any of the 10 nodes will connect you to one of the three nginx tasks.

群是使用 swarm initswarm join 创建的。

使用 docker network ls 在两个节点上找到入口群网络:

NETWORK ID          NAME                DRIVER              SCOPE
cv6hk9wce8bf        ingress             overlay             swarm

编辑: 管理节点运行 linux,工作节点运行 OSX。在管理器节点上运行 modinfo ip_vs 返回:

filename:       /lib/modules/4.4.0-109-
generic/kernel/net/netfilter/ipvs/ip_vs.ko
license:        GPL
srcversion:     D856EAE372F4DAF27045C82
depends:        nf_conntrack,libcrc32c
intree:         Y
vermagic:       4.4.0-109-generic SMP mod_unload modversions 
parm:           conn_tab_bits:Set connections' hash size (int)

运行 modinfo ip_vs_rr 返回:

filename:       /lib/modules/4.4.0-109-
generic/kernel/net/netfilter/ipvs/ip_vs_rr.ko
license:        GPL
srcversion:     F21F7372F5E2331EF5F4F73
depends:        ip_vs
intree:         Y
vermagic:       4.4.0-109-generic SMP mod_unload modversions 

编辑 2: 我尝试向 swarm 添加一个 linux worker,它像宣传的那样工作,所以问题似乎与 OSX 机器有关。

问题已为我解决,但是,我会将问题保留以备将来引用。

最佳答案

确保 7946/tcp7946/udp4789/udp 已打开并可供集群中的所有节点使用 docker swarm init.

不知道为什么,但如果它们在创建 swarm 之前没有打开,它们将无法正确地进行负载平衡。

关于Docker群模式路由网格不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48360577/

相关文章:

docker - Docker 容器中的 Cuda 运行时/驱动程序不兼容

docker - 在docker中提交子图像后如何删除父图像?

image - 如何删除具有相同 imageID 的多个 docker 图像?

Docker 群模式负载均衡未按描述工作

Docker swarm 容器无法解析另一个节点中容器的地址

amazon-web-services - AWS更新后重新部署Docker

docker - 无法连接到 Docker 镜像中的节点

docker - 仅使用节点的Docker Swarm?

本地开发中具有远程 IP (54.xxx.xxx.23) 的 docker 容器端口映射

docker - docker swarm服务如何在重启策略中指定延迟时间?