如何在 Docker Swarm 中分配 Jenkins Slave 容器

How to Distribute Jenkins Slave Containers Within Docker Swarm

我想让我的 Jenkins master(未容器化)在容器中创建 slave。所以我已经将 docker 插件安装到 jenkins 中,创建了一个 docker 服务器,进行了配置,并且 jenkins 在创建作业后确实启动了一个从属容器。

然而,在我创建了另一个 docker 服务器并从其中两个创建了一个集群并再次尝试 运行 jenkins 作业之后,它继续只在原始服务器上部署容器(现在也是经理)。我希望 swarm 能够平衡负载并将新创建的容器均匀地分布在 swarm 中。我错过了什么?

我是否必须使用服务?

Docker 图像本身不会负载平衡,即使部署在 swarm 中也是如此。您正在寻找的确实是服务定义。只是因为端口分配要小心。如果您正在部署您的 jenkins slaves 以侦听端口 80 等,所有 swarm 主机 将侦听端口 80 和到容器的网状路由。

基本上意味着您无法将任何其他内容部署到这些主机上的端口 80。然而,一旦完成,对主机的任何请求都将负载均衡到容器。

另一个好处是您可以通过服务更新动态更改副本数

docker service update JenkinsService --replicas 42

虽然 42 可能是极端值,但您显然可以更改它:)

在那一刻,我在群中找不到任何东西可以帮助我操纵跨群节点的容器分布。

最终为此目的使用了更灵活的 kubernetes。我认为马拉松也能做到这一点。