哪个容器/服务在 Docker for Azure 中创建外部负载均衡器规则?

哪个容器/服务在 Docker for Azure 中创建外部负载均衡器规则?

Docker for Azure 的一个有用功能是,当您在容器集群中部署 Swarm 服务时,Docker for Azure 服务会自动创建负载均衡器规则,以将公共流量路由到该服务(使用与 Swarm 服务上发布的相同端口)。但是,我们想改变创建这些负载均衡器规则的方式。我们需要这样做,以便通过将特定服务端点映射到特定公共 IP 和端口来引入多租户。

为了使我们能够定制负载均衡器规则的创建行为,我们需要了解哪个 Docker4x 容器负责创建这些负载均衡器规则,了解它是如何做到这一点的,然后创建我们自己的服务版本(如果我们无法重新配置现有的服务来做我们想要的事情)。

有人能帮助我们在哪里找到这些信息吗?

答案1

重复在 docker 论坛上回答

执行 LB 配置的容器是 docker4x/l4controller-azure,名为 editions_controller。在领导节点上运行的容器会检查是否有任何新服务发布了端口,如果该端口尚未出现在 Azure LB 中,则会为其配置规则。您可以在此处看到 Infrakit 中实现的核心群集侧轮询逻辑:https://github.com/docker/infrakit/tree/master/pkg/controller

docker4x/l4controller-azure 使用与 Docker4Azure 中上述非常相似的代码,同时服务端口轮询器连接到 Azure API 以在 Azure LB 上发布端口。

您还需要停止 editions_controller 并让您自己的控制器生效。为此,您只需执行:swarm-exec docker run -v /var/run/docker.sock:/var/run/docker.sock -v /usr/bin/docker:/usr/bin/docker -e containername=editions_controller docker4x/stopcontainer:latest

相关内容