【问题标题】:What container orchestration tools can deploy containers with routable IP addresses?哪些容器编排工具可以部署具有可路由 IP 地址的容器?
【发布时间】:2017-05-23 15:38:51
【问题描述】:

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

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

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

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

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

到目前为止,我一直尝试使用 docker swarm 1.12 来实现这一点,使用 docker 服务,但很明显,这不是该编排工具的预期用例。

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

  1. 将多台服务器上的 docker 容器绑定到特定的 IP 地址,在创建 docker 容器时定义。
  2. 知道每台服务器都有一个特定的 IP 地址池可供选择,并且知道每个节点上的池都不同。
  3. 不会覆盖自身并尝试将两个正在运行的容器绑定到同一个 IP 地址。

它还必须提供容器编排工具的一些更常见的方面,例如:

  1. 在发生节点故障时提供自动容器重新调度。
  2. 提供自我修复,创建新容器来替换已死亡的旧容器。
  3. 为容器部署提供一个简单的系统。

我还应该注意,我的每台服务器也是 consul 集群的一部分。对我来说,根据我非常具体的网络要求,似乎最好的解决方案是结合使用 consul watch、consul 健康检查和 consul 键值来管理整个系统(可能使用旧的容器化版本的 docker swarm)在每个运行 docker 的实例上运行个人编写的脚本,以确定任何一台服务器应该采取的正确行动。

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

另外请注意,我在私有的 openstack 云中运行我的系统,在 ubuntu 14.04 服务器上(所以舰队不是一个选项)。

【问题讨论】:

  • 这对于DevOps proposal 来说可能是一个很好的问题,因为您正在尝试解决具体的部署问题。
  • 好的,我已经标记了要移动的帖子。
  • DevOps 站点“仅”处于提案阶段,因此您不能将帖子移到那里,但也许您可以在 cmets 中添加您的问题标题和指向该问题的链接。

标签: docker consul orchestration docker-networking


【解决方案1】:

检查Docker Swarm

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

Kubernetes

http://kubernetes.io/docs/

【讨论】:

  • 这应该是评论而不是答案。您没有回答我的问题,为此您需要告诉我WHY您的任何一个建议都可以满足我的要求。正如我在解释中所说,没有 docker swarm 不是一种选择。此外,是的,我知道 kubernetes 存在,问题是它(或任何其他常用工具)是否可以满足我的特定端口映射要求。
  • 我对 Kubernetes 调度策略了解不多,但据我所知 Docker Swarm 只支持这些值:spread,binpack,random。 Spread 和 binpack 策略基于节点的可用 CPU、RAM、它拥有的容器数量。随机策略不使用计算,它随机选择节点,所以我认为你不能部署在特定的 IP 地址上
猜你喜欢
  • 2014-12-19
  • 2021-01-23
  • 1970-01-01
  • 1970-01-01
  • 2017-01-12
  • 1970-01-01
  • 1970-01-01
  • 2021-10-19
  • 2018-09-15
相关资源
最近更新 更多