我正在使用多个节点上的群集来托管某些Web服务。管理器节点将traefik作为代理和ssl端点运行。
这是其中一个虫群堆栈的简化组合文件:
version: '3.2'
services:
test1:
networks:
- internal
deploy:
mode: global
placement:
constraints: [node.platform.os == linux]
otherservice:
image: dummy/other
ports:
- 9000
networks:
- internal
deploy:
mode: replicated
replicas: 1
placement:
constraints: [node.role == manager]
loadbalancer:
image: traefik
ports:
- 80:80
- 443:443
- 9999:8080
deploy:
placement:
constraints: [node.role == manager]
networks:
- internal
- gateway
networks:
internal:
external: true
gateway:
external: true
因此,基本上,服务使用的是覆盖类型的网络“内部”。网关是仅在管理器上运行的桥接网络。
问题在于上述配置,在traefik服务上发布的端口已在两个网络上发布。是否有机会仅将这些端口发布到使用的网络之一(在本例中为网关)?
我想避免将这些端口绑定到其他集群节点上,因为在那里我需要它们来填充其他东西。
谢谢!
编辑:向该问题添加一些信息。这是我的一个工作节点上的监听端口的样子
dockerd 2342 root 44u IPv6 1439543 0t0 TCP *:80 (LISTEN)
dockerd 2342 root 50u IPv6 1439561 0t0 TCP *:443 (LISTEN)
dockerd 2342 root 52u IPv6 1439579 0t0 TCP *:9999 (LISTEN)
那些没有运行任何发布端口的容器-因此我怀疑端口是由于负载平衡器服务上的覆盖网络而发布的,即使该服务未在工作节点上运行也是如此。我错了吗?