kubernetes爪牙之间的networking

我安装了一个8节点的kubernetes集群(1个master + 7 minion),但是我遇到了一个小型的networking问题。

我按照这个Fedora手册的步骤来安装我的集群,所以我使用Fedora 20的testing版本库来获取kubernetes的二进制文件。

安装后,我想尝试留言簿的例子 ,但在我看来,在集装箱间的networking有一个问题。

尽pipe容器/ POD处于运行状态,我可以通过浏览器访问我的3个前端容器,也可以通过natcat访问redis容器,但不在同一台主机上的前端不能访问redis主服务器。 前端的PHP返回networkingexception。

有谁能帮我解释为什么容器不能在主机之间互相通达?

我希望我可以准确地描述我的设置,并提前感谢。

你遵循的Fedora指南只会让你在一台机器上运行。 它避免了跨节点build立networking的问题。

为了kubernetes工作,下面的networking设置必须满足:

  1. 每个容器都应该能够与其他容器交谈,甚至跨节点。 这也意味着这些容器的网桥IP范围不能重叠。
  2. 在不在容器中的节点上运行的代码应该能够到达每个容器(反之亦然),即使在节点上也是如此。
  3. 如果networking中不是集群一部分的计算机可以直接访问容器,这是没有必要的(但有用)。

有很多方法可以实现这一点 – 例如为stream浪者设置每个节点之间的GRE隧道。 在GCE上,我们使用平台的function来进行路由。 如果你在交换机上的物理机器上,你可能只需要做一个大型的第二层networking。 一个防弹的方法来开始(但可能不是最高性能,取决于你的设置)是使用像法兰绒一样。

我们正在努力使这个东西更容易启动(不使用大量的shell脚本),并且正在考虑构build类似于法兰绒的东西,以便有一个合理的默认值。