2

我安装了一个 8 节点 kubernetes 集群(1 个 master + 7 个 minion),但我遇到了 minions 之间的网络问题。

我根据这个分步 Fedora 手册安装了我的集群,所以我使用 Fedora 20 及其测试存储库来获取 kubernetes 二进制文件。

安装后,我想尝试留言本示例,但在我看来,容器间网络存在问题。

虽然容器/POD 处于运行状态,我可以访问我的 3 个前端容器(通过浏览器)和 redis 容器(通过 natcat),但是与 redis 不在同一主机上的前端无法访问 redis master。前端的 PHP 回馈网络异常。

任何人都可以帮助我为什么容器无法在主机之间相互访问吗?

我希望我能足够准确地描述我的设置,并提前致谢。

4

1 回答 1

3

您遵循的 Fedora 指南只会让您在单台机器上运行。它避免了围绕节点设置网络的问题。

要使 Kubernetes 正常工作,必须满足以下网络设置:

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

有很多方法可以实现这一点——例如,vagrant 的设置在每个节点之间设置 GRE 隧道。在 GCE 上,我们使用平台的特性来进行路由。如果您在交换机上的物理机器上,您可能只需要使用网桥构建一个大型第 2 层网络。一种万无一失的入门方法(但可能不是最高效的,具体取决于您的设置)是使用flannel之类的方法。

我们正在努力使这些东西更容易启动(不使用混乱的 shell 脚本),并且正在考虑构建类似 flannel 的东西,以便有一个合理的默认值。

于 2014-12-14T22:08:45.007 回答