zoukankan      html  css  js  c++  java
  • 容器网络(八)容器在 Weave 中如何通信和隔离?【60】

    (十八)容器在 Weave 中如何通信和隔离?

    上一节我们分析了 Weave 的网络结构,今天讨论 Weave 的连通和隔离特性。

    首先在host2 执行如下命令:

    root@host2:~# weave launch 10.0.0.21
    e1057e986c0e485b59bf3089e7abb27ee0e5b18b48d8a1725de64f275f8026de
    
    

    这里必须指定 host1 的 IP 10.0.0.21,这样 host1 和 host2 才能加入到同一个 weave 网络。

    运行容器 bbox3:

    eval $(weave env)
    docker run --name bbox3 -itd busybox
    
    

    (1)weave 网络连通性

    bbox3 能够直接 ping bbox1 和 bbox2

    root@host2:~# docker exec bbox3 ping -c 2 bbox1
    
    root@host2:~# docker exec bbox3 ping -c 2 bbox2
    
    

    ​ bbox1、bbox2 和 bbox3 的 IP 分别为 10.32.0.1/12、10.32.0.2/12 和 10.320.3/12,注意掩码为 12 位,实际上这三个 IP 位于同一个 subnet 10.32.0.0/12。通过 host1 和 host2 之间的 VxLAN 隧道,三个容器逻辑上是在同一个 LAN 中的,当然能直接通信了。bbox3 ping bbox1 的数据流向如下图所示:

    ① 数据包目的地址为 10.32.0.1,根据 bbox3 的路由表,数据从 ethwe 发送出去。

    root@host2:~# docker exec bbox3 ip route
    default via 172.17.0.1 dev eth0 
    10.32.0.0/12 dev ethwe scope link  src 10.32.0.1 
    172.17.0.0/16 dev eth0 scope link  src 172.17.0.2 
    224.0.0.0/4 dev ethwe scope link 
    root@host2:~# 
    
    

    ② host2 weave 查询到目的地主机,将数据通过 VxLAN 发送给 host1。

    ③ host1 weave 接受到数据,根据目的 IP 将数据转发给 bbox1。

    (2)weave 网络隔离

    ​ 默认配置下,weave 使用一个大 subnet(例如 10.32.0.0/12),所有主机的容器都从这个地址空间中分配 IP,因为同属一个 subnet,容器可以直接通信。如果要实现网络隔离,可以通过环境变量 WEAVE_CIDR 为容器分配不同 subnet 的 IP,举例如下:

    root@host2:~# docker run -e WEAVE_CIDR=net:10.32.2.0/24 -it busybox
    / # ip route
    default via 172.17.0.1 dev eth0 
    172.17.0.0/16 dev eth0 scope link  src 172.17.0.3 
    10.32.2.0/24  dev ethwe src 10.32.2.2
    / # ping -c 2  bbox2
    ping: bad address 'bbox2'
    / # 
    
    

    ​ 这里 WEAVE_CIDR=net:10.32.2.0/24 的作用是使容器分配到 IP 10.32.2.2。由于 10.32.0.0/12 与 10.32.2.0/24 位于不同的 subnet,所以无法 ping 到 bbox1。除了 subnet,我们还可以直接为容器分配特定的 IP:

    root@host2:~# docker run -e WEAVE_CIDR=ip:10.32.6.6/24 -ti busybox
    / # ip route
    default via 172.17.0.1 dev eth0 
    172.17.0.0/16 dev eth0 scope link  src 172.17.0.3 
    10.32.6.0/24  dev ethwe src 10.32.6.6
    / # ping -c 2 bbox2
    / # 
    
    
  • 相关阅读:
    [ZT]数据表:USR02(登录数据)
    ASP.NET Web 应用程序与ASP.NET网站比较
    DataTable排序的一般方法
    如何重建開啟被锁的SAP超级用戶帐号
    SQL語句中时间格式的转换
    [ZT]提高 Ajax 应用程序性能,避开 Web 服务漏洞
    SAP NetWeaver
    SAP安装步骤[ECC6]WIN2000AS
    SAP&SAP Solution Manager中的常用命令
    [转]如何在Visio 2007中画接口和实现类的关系图
  • 原文地址:https://www.cnblogs.com/cuiyongchao007/p/14148997.html
Copyright © 2011-2022 走看看