美文网首页docker小集合
overlay 网络的具体实现

overlay 网络的具体实现

作者: 逗比的一生 | 来源:发表于2019-11-29 16:47 被阅读0次

    docker 会为每个 overlay 网络创建一个独立的 network namespace,其中会有一个 linux bridge br0,endpoint 还是由 veth pair 实现,一端连接到容器中(即 eth0),另一端连接到 namespace 的 br0 上。

    br0 除了连接所有的 endpoint,还会连接一个 vxlan 设备,用于与其他 host 建立 vxlan tunnel。容器之间的数据就是通过这个 tunnel 通信的。逻辑网络拓扑结构如图所示:


    逻辑网络拓扑图

    要查看 overlay 网络的 namespace 可以在 host1 和 host2 上执行ip netns(请确保在此之前执行过ln -s /var/run/docker/netns /var/run/netns),可以看到两个 host 上有一个相同的namespace “1-f4af9b33c0”

    ip netns
    ......
    1-f4af9b33c0
    ......
    

    这就是 ov_net1 的 namespace,查看 namespace 中的 br0 上的设备。


    br0

    查看 vxlan1 设备的具体配置信息可知此 overlay 使用的 VNI(VxLAN ID)为 256。


    vxlan

    overlay IPAM

    docker 默认为 overlay 网络分配 24 位掩码的子网(10.0.X.0/24),所有主机共享这个 subnet,容器启动时会顺序从此空间分配 IP。当然我们也可以通过 --subnet 指定 IP 空间。
    docker network create -d overlay --subnet 10.22.1.0/24 ov_net3

    相关文章

      网友评论

        本文标题:overlay 网络的具体实现

        本文链接:https://www.haomeiwen.com/subject/keugwctx.html