哪些容器编排工具可以使用可路由的IP地址部署容器?

时间:2016-07-18 07:25:45

标签: docker consul orchestration docker-networking

我正在尝试将容器部署到多个节点的分布式系统上,最终目标是将每个容器绑定到其自己的特定可路由IP地址。这是因为我想为我的docker容器使用硬件负载平衡器,这需要单独的IP地址。

通过使用docker命令行工具启动在具有多个网络接口的服务器上运行的容器(eth0:0。eth0:1,eth0:2,eth1,eth2,eth3等,我可以实现具有可路由IP地址的容器。 。)每个都有自己的可路由IP地址。然后,每个容器可以使用特定的-p选项将自身附加到其中一个接口的可用IP地址。

例如,如果我在1.2.3.4上有eth0:2的IP,我想附加一个nginx容器,我可以使用以下命令附加它:

docker run -d -p 1.2.3.4:80:80 nginx

此限制是每个运行docker的实例都有一个特定的可路由IP地址池。我的业务流程工具必须只能使用该池中的IP地址,并且只能使用每个IP地址一次。 (不要担心扩展问题,可以始终从openstack管理节点添加更多IP地址。)

到目前为止,我一直尝试使用docker服务实现这个与docker swarm 1.12相关的功能,但很明显这不是该业务流程工具的预期用例。

所以我正在寻找一个新的编排工具,让我可以执行以下操作:

  1. 将多个服务器上的docker容器绑定到创建docker容器时定义的特定IP地址。
  2. 知道每个服务器都有一个可供选择的特定IP地址池,并且知道每个节点上的池都不同。
  3. 不会覆盖自身并尝试将两个正在运行的容器绑定到同一个IP地址。
  4. 它还必须提供容器管理工具的一些更常见的方面,例如:

    1. 在节点发生故障时提供自动容器重新安排。
    2. 提供自我修复,创建新容器以替换已经死亡的旧容器。
    3. 为容器部署提供一个简单的系统。
    4. 我还应该注意,我的每台服务器也都是consul集群的一部分。对我来说,基于我非常具体的网络要求,似乎最好的解决方案是使用领事手表,领事健康检查和领事关键值(可能使用旧的集装箱化版本的docker)来管理整个系统。 swarm)在运行docker的每个实例上运行个人编写的脚本,以确定任何服务器应采取的正确的操作过程。

      但是我宁愿为我的目的使用通用的容器编排工具。所以我想知道是否有任何其他容器编排工具(如mesos,kubernetes,nomad等)允许此级别的docker端口映射自定义?或者我最好只使用自定义领事健康检查和手表?

      另请注意,我在ubuntu 14.04服务器上的私有openstack云中运行我的系统(因此不能选择机群)。

1 个答案:

答案 0 :(得分:0)

检查 Docker Swarm

https://docs.docker.com/swarm/

Kubernetes

http://kubernetes.io/docs/

相关问题