Docker 容器架构中的子集群和覆盖网络

问题描述

我想在多台机器上分发许多基于微服务的项目。这些项目共享一个通用的分层架构。

微服务以 Docker 容器的形式实现。

我正在寻找一种只有网络的方法,没有像 Kubernetes 或 Swarm 这样的编排器。

为了解释和简单起见,我会尽量简化。

2 台机器或节点(裸机或 VPS,无所谓)。每个节点都有自己的公共 IP (eth0) 和私有 IP (eth1)。 2个项目(A、B) 每个项目 2 个容器(X、Y)。容器可以存在于任何机器中,这是不确定的。

我希望每个项目都位于自己的“子集群”或“二级集群”中。每个子集群都有自己的专用网络。每个子集群的网络相同(例如:10.0.0.0/24)

所以在每个项目或子集群中:

X: 10.0.0.1/24
Y: 10.0.0.2/24

显然,往返于 10.0.0.0/24 的路由仅在每个子集群内有意义。

我希望每个子集群的容器 X 成为覆盖网络的一部分,以便它们可以在它们之间进行通信。例如 192.168.0.0/16。

X (subcluster A): 192.168.0.1
X (subcluster B): 192.168.0.2

所以可能的情况是:

Node 1:

    XA
        dev0: 10.0.0.1
        dev1: 192.168.0.1
    YB
        dev0: 10.0.0.2

Node 2:

    YA
        dev0: 10.0.0.2
    XB
        dev0: 10.0.0.1
        dev1: 192.168.0.2

当涉及到主机和主机间网络以及标准 Linux 网络工具时,我熟悉创建子网来划分网络。

但这里的挑战是我们正在处理一个容器网络,并且我想要具有相同私有网络的子集群。我什至不知道这是否有意义。

我正在尝试使用 Calico 的一种方法,但看起来它过于面向 Kubernetes。现在我在看 weave。但此刻我很迷茫。

欢迎任何建议或想法。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)