面向非集群工作者的 Docker 远程管理工具

面向非集群工作者的 Docker 远程管理工具

我正在寻找扩展用于对多个远程位置的设备执行定期性能测试的 docker 应用程序的方法。此应用程序需要在每个远程工作节点上运行相同的性能测试(使用相同的底层映像),并且每个工作节点都有特定的配置。

考虑这个例子,我有三台服务器......

  • worker.denver.example.com
  • worker.chicago.example.com
  • worker.newyork.example.com

...我想在所有三个工作节点上运行我的容器fizbuz-testerfoobar-performance我该如何做:

  • fizbuz-tester在 每小时运行一次worker.denverworker.chicago在 则每六小时运行一次worker.newyork
  • foobar-performanceMY_JAM=ABBAon worker.chicagoMY_JAM=IRONMAIDENonworker.denverMY_JAM=BEATLESon中设置环境变量worker.newyork

运行容器的底层 Docker 映像是相同的,但运行时设置不同(并将定期调整)。目前,我的流程是查阅文档并docker run在每个工作器上运行适当的命令。如果我想更改容器的配置选项之一,则再次涉及连接到工作器。可扩展性问题应该很明显。

当该应用程序从 3 个工作节点扩展到 5 个、10 个、20 个时,我该如何管理它?

我发现的 Docker 编排工具似乎基于“在很多地方以同样的方式做同样的事情”,而对于我的申请,我需要“做同样的事情不同的在很多地方都有这样的方法”

远程容器编排的首选-Docker Swarm-不符合我的用例。我读过的有关 Swarm 的所有内容都表明,它抽象了实际 Docker 工作主机的管理,而这恰恰不是我需要的。

是否有一种工具可以让我从中央服务器远程管理多个 docker 工作节点,同时仍然可以让我单独控制每个工作节点,而不仅仅是作为资源池的一部分?

我希望两年后这个问题可能有一个答案

答案1

OpenSVC 可用于满足您的需求。

* fizbuz-测试员 *

[DEFAULT]
nodes = *
topology = flex
flex_target = 2

[task#fizbuz]
type = docker
image = fizbuz-tester:latest
netns = host
rm = true
[email protected] = @360
schedule = @60

请参阅计划定义文档以了解高级语法https://docs.opensvc.com/latest/agent.scheduler.html#schedule-definition

* foobar-性能 *

[DEFAULT]
nodes = *
topology = flex
flex_target = 3

[task#foobar]
type = docker
image = foobar-performance:latest
netns = host
[email protected] = MY_JAM=ABBA
[email protected] = MY_JAM=IRONMAIDEN
[email protected] = MY_JAM=BEATLES
rm = true

当任务没有计划时,你可以使用以下方式手动运行它:om foobar-performance run --rid task#foobar

当您扩大节点时,您只需将新节点加入集群(加入节点上的 2 个命令),服务就会自动扩大。

OpenSVC 2.0 还可通过集群 TLS 套接字进行远程管理https://docs.opensvc.com/latest/agent.configure.client.html

答案2

当您运行 docker 命令时,“docker”二进制文件只是一个客户端(= docker cli),它向 docker 引擎发送 HTTP 请求,默认情况下发送到本地 unix 套接字。
当您在服务器上激活远程访问时,您可以从远程计算机运行 docker 命令。

搜索“docker remote api”或查看https://gist.github.com/kekru/4e6d49b4290a4eebc7b597c07eaf61f2

如果你安装了最新的docker cli 19.03,那么你可以使用新的docker context命令在远程服务器之间切换
https://docs.docker.com/engine/context/working-with-contexts/

相关内容