使用 OVS 打通多节点上的容器通信(Overlay)
概述
在《启动》这一篇中,学习了如何启动 ovs 服务,并使用 ovs 创建 bridge 设备,然后打通节点内容器间的通信。这一节主要是学习在多节点之间构建一个 overlay 的网络,然后打通所有容器间的通信。最终的网络拓扑图可能如下:

准备工作
我这里写了两个很简单的创建 bridge,然后将容器加入到 bridge 上。
使用上面的脚本创建基本环境后,可以得到下图所示的情况:

使用 VXLAN 构建 overlay 网络
VXLAN 在每个节点上都会启动 vtep,然后使用 UDP 封装 IP 包进行转发,由 vtep 进行封包和解包。我们这里使用 ovs 来创建 VXLAN 网络,写了一个简单的脚本帮助快速创建:
创建结束后,我们确认一下 vxlan 的 vtep 是否启动了。可以看到确实有进程监听了 8472 这个端口。
现在测试一下容器之间的网络通信:
此时的网络拓扑图应该如下:

TODO: 此时容器中还没法访问互联网
使用 GRE 构建 overlay 网络
使用 GRE 来构建 overlay 网络和使用 VXLAN 类似,执行类似以下代码即可:
测试一下跨节点容器的网络连通性:
Last updated
Was this helpful?