Weave 网络结构分析

在 host1 中运行容器 bbox1:

eval $(weave env)

docker run --name bbox1 -itd busybox

首先执行 eval $(weave env) 很重要,其作用是将后续的 docker 命令发给 weave proxy 处理。

如果要恢复之前的环境,可执行 eval $(weave env --restore)。

查看一下当前容器 bbox1 的网络配置:

bbox1 有两个网络接口 eth0 和 ethwe,其中 eth0 连接的是默认 bridge 网络,即网桥 docker0。

现在我们重点分析 ethwe。从命名和分配的 IP 10.32.0.1/12 可以猜测 ethwe 与 weave 相关,ethwe@if16 告诉我们与 ethwe 对应的是编号 16 的 interface。

从 host1 的 ip link 命令输出中找到该 interface:

vethwepl3086 与 ethwe 是一对 veth pair,而且 vethwepl3086 挂在 host1 的 Linux bridge weave 上。

除了 vethwepl3086,weave 上还挂了一个 vethwe-bridge,这是什么?让我们更深入的分析一下

查看 ip -d link 输出:

这里出现了多个新 interface:

1) vethwe-bridge 与 vethwe-datapath 是 veth pair。

2) vethwe-datapath 的父设备(master)是 datapath。

3) datapath 是一个 openvswitch。

4) vxlan-6784 是 vxlan interface,其 master 也是 datapath,weave 主机间是通过 VxLAN 通信的。

host1 的网络结构如下图所示:

weave 网络包含两个虚拟交换机:Linux bridge weave 和 Open vSwitch datapath,veth pair vethwe-bridge 和 vethwe-datapath 将二者连接在一起。

weave 和 datapath 分工不同,weave 负责将容器接入 weave 网络,datapath 负责在主机间 VxLAN 隧道中并收发数据。

再运行一个容器 bbox2。

docker run --name bbox2 -itd busybox

当前 host1 网络结构为:

----------------------------------------------引用来自------------------------------------------------

https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587832&idx=1&sn=710f49b1d27700dd1027ef1799870e24&chksm=8d308161ba470877ed8283423553eb478129ce042ccb9eb13efbaacb5f9a883876982715a38d&scene=21#wechat_redirect

第 8 章 容器网络 - 064 - Weave 网络结构分析的更多相关文章

  1. 第 10 章 容器监控 - 080 - Weave Scope 容器地图

    Weave Scope 容器地图 Weave Scope 的最大特点是会自动生成一张 Docker 容器地图,让我们能够直观地理解.监控和控制容器. 安装 执行如下脚本安装运行 Weave Scope ...

  2. 第 10 章 容器监控 - 081 - Weave Scope 多主机监控

    除了监控容器,Weave Scope 还可以监控 Docker Host 点击顶部 HOSTS 菜单项,地图将显示当前 host. 与容器类似,点击该 host 图标将显示详细信息 host 当前的资 ...

  3. 第 8 章 容器网络 - 063 - 如何使用 Weave 网络?

    如何使用 Weave 网络? weave 是 Weaveworks 开发的容器网络解决方案. weave 创建的虚拟网络可以将部署在多个主机上的容器连接起来. 对容器来说,weave 就像一个巨大的以 ...

  4. 如何使用 Weave 网络?- 每天5分钟玩转 Docker 容器技术(63)

    weave 是 Weaveworks 开发的容器网络解决方案.weave 创建的虚拟网络可以将部署在多个主机上的容器连接起来.对容器来说,weave 就像一个巨大的以太网交换机,所有容器都被接入这个交 ...

  5. Docker网络解决方案 - Weave部署记录

    前面说到了Flannel的部署,今天这里说下Docker跨主机容器间网络通信的另一个工具Weave的使用.当容器分布在多个不同的主机上时,这些容器之间的相互通信变得复杂起来.容器在不同主机之间都使用的 ...

  6. 61-如何使用 Weave 网络?

    weave 是 Weaveworks 开发的容器网络解决方案.weave 创建的虚拟网络可以将部署在多个主机上的容器连接起来.对容器来说,weave 就像一个巨大的以太网交换机,所有容器都被接入这个交 ...

  7. [经验分享] Docker网络解决方案-Weave部署记录

    前面说到了Flannel的部署,今天这里说下Docker跨主机容器间网络通信的另一个工具Weave的使用.当容器分布在多个不同的主机上时,这些容器之间的相互通信变得复杂起来.容器在不同主机之间都使用的 ...

  8. 第 8 章 容器网络 - 066 - Weave 如何与外网通信?

    Weave 与外网通信 weave 是一个私有的 VxLAN 网络,默认与外部网络隔离. 外部网络如果要访问到 weave 中的容器:1.首先将主机加入到 weave 网络.2.然后把主机当作访问 w ...

  9. 第 8 章 容器网络 - 065 - 容器在 Weave 中如何通信和隔离?

    首先在host2 执行如下命令: weave launch 10.12.31.22 这里必须指定 host1 的 IP 10.12.31.22,这样 host1 和 host2 才能加入到同一个 we ...

随机推荐

  1. 转 消息中间件:RocketMQ 介绍(特性、术语、原理、优缺点、消息顺序、消息重复)

    https://blog.csdn.net/jiangyu1013/article/details/81668671 消息中间件的作用 1. 应用解耦 2. 异步处理 比如用户注册场景,注册主流程完成 ...

  2. 格式化输出&初始编码&运算符

    一:格式化输出 %     %d   %s %为占位符   S替换的内容的类型为字符型 d替换的内容为整型 若在格式化输出的时候需要正常用到% 则表示时用两个%%表示 如: name = input( ...

  3. maven build resources

    1.在我用springboot+mytatis时,生成完mapper后,然后访问网站总是报错 错误信息: Servlet.service() for servlet [dispatcherServle ...

  4. varnish缓存系统基础知识

    缓存系统类型 1.页面缓存/pageCache     缓存静态资源(html js css image)  例如:varnish    squid 2.数据缓存/dataCache      缓存应 ...

  5. 020-并发编程-java.util.concurrent之-jdk6/7/8中ConcurrentHashMap、HashMap分析

    一.概述 哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表. 是根据关键码值(Key ...

  6. 2019年度【计算机视觉&机器学习&人工智能】国际重要会议汇总

    简介 每年全世界都会举办很多计算机视觉(Computer Vision,CV). 机器学习(Machine Learning,ML).人工智能(Artificial Intelligence ,AI) ...

  7. 在 .Net Core1.0 上使用Mysql 的EFcore

    https://www.codeproject.com/Articles/1218348/Using-EF-Core-with-MySQL-in-DotNet-Core

  8. HBase笔记6 过滤器

    过滤器 过滤器是GET或者SCAN时过滤结果用的,相当于SQL的where语句 HBase中的过滤器创建后会被序列化,然后分发到各个region server中,region server会还原过滤器 ...

  9. 如何在java List中进行模糊查询

    比如我有下面这样一个List,里面存放的是多个Employee对象.然后我想对这个List进行按照Employee对象的名字进行模糊查询.有什么好的解决方案么? 比如我输入的查询条件为“wang”,那 ...

  10. html5 javascript 事件练习2

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...