0

我正在寻找一个可以管理计算机集群的“简单”部署系统。

我有一个 Docker 映像(托管在DockerHub上),它将在此集群中以不同的环境参数运行。对于这个图像,我有一个 docker_compose 文件,我可以直接在机器上启动它(现在可以使用)。

我正在寻找的是一个集群管理系统,我可以向其中添加物理计算机(节点),然后我可以发出如下命令:

$ docker-compose up

或者

$ docker run --device /dev/sda -e ENV1 -e ENV2 image_id

理想情况下,集群(管理器)将其安排在一个可用节点上。我将加入集群的所有节点都有运行容器所需的资源,因此我对可以根据硬件需求调度容器的集群管理系统不感兴趣。此外,它不一定需要对 Docker 的支持,只需能够在集群的节点上远程发出命令。理想情况下,这也是我可以与之交谈的命令行以外的 API。

我试过/看过的

  1. Docker swarm 模式- 似乎是完美的选择,但我遇到了死胡同,因为我使用了“--device”参数,目前还不支持(而且可能永远不会支持)。
  2. 码头机器

Docker 运行镜像

  • 这似乎正是我想要的,但它不再受支持,所以我认为这不是一个好的选择。
  1. Kubernetes听起来不错,但乍一看似乎有点矫枉过正。也不确定它是否可以做“--device”,所以我在学习它并遇到另一个死胡同时犹豫不决。

欢迎任何建议!

4

1 回答 1

1

至于kubernetes和对 in 之类--device的支持docker这个答案应该可以打消你的疑虑。

它在 github 上的这个线程中被广泛讨论。尽管在 kubernetes 中没有完全相同的等价物,但值得重申的是,可以通过启用特权模式--device在您的 kubernetes 中使用主机设备,如此评论中所建议的:Pods

  containers:
  - name: foo
    ...
    volumeMounts:
    - mountPath: /dev/snd
      name: dev-snd
    securityContext:
      privileged: true
  volumes:
  - name: dev-snd
    hostPath:
      path: /dev/snd

它使您可以使用并提供上述示例中的设备路径,将其安装到Pod特定节点上可用的任何设备中,从而使您能够使用主机上可用的声卡。hostPath/dev/snd

但是,您需要决定在您的特定情况下,从安全角度来看,运行特权容器是否可以接受。

如果您寻找更安全的方式来安装特定主机设备以提供更精细的控制级别,请查看设备插件,例如特定的插件,如此处提到用于公开/dev/kvm更通用的插件,允许您配置几乎任何设备通过设备 cgroup托管/dev到您的Kubernetes 。 Pods

当您计划在多节点集群上运行和管理您的 docker容器时, Kubernetes不必过度使用,特别是如果您决定使用 @DannyB 在评论中已经建议的托管解决方案。值得一提的是,它目前在所有主要云提供商的产品中都可用:GCP上的GKEAWS上的EKSAzure上的AKS,这也说明了它越来越受欢迎。

Kubernetes也是非常可扩展和动态开发的解决方案,近年来迅速普及,因此绝对值得仔细研究一下。

于 2020-07-16T15:45:04.600 回答