简单的Docker容器集群部署系统

时间:2020-07-16 10:23:41

标签: docker kubernetes docker-swarm cluster-manager

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

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

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

$ docker-compose up

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

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

我尝试过/看过的东西

  1. Docker swarm mode-似乎是完美的选择,但是我遇到了一个死胡同,因为我使用了{-{3}}这个“ --device”参数(它可能永远不会出现) 。
  2. not supported

Docker machine

  • 这似乎正是我想要的,但是不再受支持,所以我认为这不是一个好选择。
  1. Docker run image听起来不错,但乍一看似乎有点过分了。也不确定它是否可以执行“ --device”操作,因此我会犹豫不决地继续学习它,并遇到另一个死胡同。

欢迎提出任何建议!

1 个答案:

答案 0 :(得分:1)

关于 kubernetes ,并支持--device中的docker之类的问题,this答案应消除您的疑虑。

它在github上的this线程中得到了广泛的讨论。尽管kubernetes中没有确切的--device等效项,但值得重复一遍,您可以按照privileged mode注释中的建议通过启用this在kubernetes Pods中使用主机设备。 / p>

  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,从而使您可以使用可用的声卡。在主机上。

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

如果您希望找到更安全的方式来安装特定的主机设备,从而获得更精细的控制级别,请查看device plugins,例如特定的设备,例如提到的here,用于暴露/dev/kvmmore general one,从而使您可以将主机/dev下的几乎所有设备配置为您的 kubernetes { {1}}通过设备cgroup。

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

Kubernetes也是一种非常可扩展且动态开发的解决方案,近年来获得了相当快的普及,因此值得仔细研究一下。