第 8 章 容器网络 - 059 - 安装配置 flannel
安装配置 flannel
1) build flannel
flannel 没有现成的执行文件可用,必须自己 build,最可靠的方法是在 Docker 容器中 build。
不过用于做 build 的 docker 镜像托管在 gcr.io,国内可能无法直接访问,所以使用参考文档中提供的镜像,构建步骤如下:
下载并重命名 image。
docker pull cloudman6/kube-cross:v1.6.2-2
docker tag cloudman6/kube-cross:v1.6.2-2 gcr.io/google_containers/kube-cross:v1.6.2-2
下载 flannel 源码。
git clone https://github.com/coreos/flannel.git

开始构建。
cd flannel
make dist/flanneld-amd64
将 flanneld 执行文件拷贝到 host1 和 host2。
scp dist/flanneld-amd64 10.12.31.22:/usr/local/bin/flanneld
scp dist/flanneld-amd64 10.12.31.23:/usr/local/bin/flanneld
将 flannel 网络的配置信息保存到 etcd。
先将配置信息写到文件 flannel-config.json 中,内容为:
{
"Network": "10.2.0.0/16",
"SubnetLen": 24,
"Backend": {
"Type": "vxlan"
}
}
- Network 定义该网络的 IP 池为 10.2.0.0/16。
- SubnetLen 指定每个主机分配到的 subnet 大小为 24 位,即10.2.X.0/24。
- Backend 为 vxlan,即主机间通过 vxlan 通信,后面我们还会讨论host-gw。
将配置存入 etcd:
etcdctl --endpoints=10.12.31.21:2379 set /docker-test/network/config < flannel-config.json

/docker-test/network/config 是此 etcd 数据项的 key,其 value 为 flannel-config.json 的内容。
key 可以任意指定,这个 key 后面会作为 flanneld 的一个启动参数。执行 etcdctl get 确保设置成功。
2) 启动 flannel
在 host1 和 host2 上执行如下命令:
flanneld -etcd-endpoints=http://10.12.31.21:2379 -iface=ens192 -etcd-prefix=/docker-test/network
- -etcd-endpoints 指定 etcd url。
- -iface 指定主机间数据传输使用的 interface。
- -etcd-prefix 指定 etcd 存放 flannel 网络配置信息的 key。
host1 上输出如下:
1、ens192 被选作与外部主机通信的 interface。
2、识别 flannel 网络池 10.2.0.0/16。
3、分配的 subnet 为 10.2.63.0/24。
flanneld 启动后,host1 内部网络会发生一些变化:

- 一个新的 interface flannel.1 被创建,而且配置上 subnet 的第一个 IP 10.2.63.0。

- host1 添加了一条路由:目的地址为 flannel 网络 10.2.0.0/16 的数据包都由 flannel.1 转发。
- 实验结果没有这条路由 路由是10.2.63.0/24.

host2 输出类似,主要区别是 host2 的 subnet 为 10.2.46.0/24:

当前环境网络拓扑如图所示:

----------------------------------------引用来自-----------------------------------------
https://mp.weixin.qq.com/s?__biz=MzIwMTM5MjUwMg==&mid=2653587804&idx=1&sn=60d710bbfebbb0e71208f4ca4dbeb246&chksm=8d308145ba470853821df51d37637f9dbfe5934ef441ac837001bc05e149aaf2c175eeb516d5&scene=21#wechat_redirect
第 8 章 容器网络 - 059 - 安装配置 flannel的更多相关文章
- 第 8 章 容器网络 - 062 - 如何使用 flannel host-gw backend?
flannel host-gw backend flannel 支持多种 backend:(1)vxlan backend:(2)host-gw: 与 vxlan 不同,host-gw 不会封装数据包 ...
- 安装配置 flannel - 每天5分钟玩转 Docker 容器技术(59)
上一节我们部署了 etcd,本节安装和配置 flannel. build flannel flannel 没有现成的执行文件可用,必须自己 build,最可靠的方法是在 Docker 容器中 buil ...
- 第 8 章 容器网络 - 058 - flannel 概述
flannel 概述 flannel 是 CoreOS 开发的容器网络解决方案. flannel 为每个 host 分配一个 subnet,容器从此 subnet 中分配 IP,这些 IP 可以在 h ...
- 第 8 章 容器网络 - 072 - 一文搞懂各种 Docker 网络
Docker 起初只提供了简单的 single-host 网络,显然这不利于 Docker 构建容器集群并通过 scale-out 方式横向扩展到多个主机上. 跨主机网络方案: Docker Over ...
- 第 8 章 容器网络 - 065 - 容器在 Weave 中如何通信和隔离?
首先在host2 执行如下命令: weave launch 10.12.31.22 这里必须指定 host1 的 IP 10.12.31.22,这样 host1 和 host2 才能加入到同一个 we ...
- 第 8 章 容器网络 - 063 - 如何使用 Weave 网络?
如何使用 Weave 网络? weave 是 Weaveworks 开发的容器网络解决方案. weave 创建的虚拟网络可以将部署在多个主机上的容器连接起来. 对容器来说,weave 就像一个巨大的以 ...
- 第 8 章 容器网络 - 054 - 准备 macvlan 环境
准备 macvlan 环境 macvlan 本身是 linux kernel 模块,其功能是允许在同一个物理网卡上配置多个 MAC 地址,即多个 interface,每个 interface 可以配置 ...
- 第 8 章 容器网络 - 061 - flannel 的连通与隔离
flannel 的连通与隔离 测试 bbox1 和 bbxo2 的连通性: bbox1 能够 ping 到位于不同 subnet 的 bbox2,通过 traceroute 分析一下 bbox1 到 ...
- 059、安装配置flannel(2019-03-28 周四)
参考https://www.cnblogs.com/CloudMan6/p/7424858.html build flannel flannel 没哟现成的执行文件可用,必须自己build,最 ...
随机推荐
- RTP协议全解析(H264码流和PS流)
转自:http://blog.csdn.net/chen495810242/article/details/39207305 写在前面:RTP的解析,网上找了很多资料,但是都不全,所以我力图整理出一个 ...
- MFC限制edit控件的字符输入长度
一. 1.Edit 控件添加EN_CHANGE事件 #define MAX_SIZE 200 void CMyDlg::OnChangeEditFeed() { // TODO: 如果该控件是 RIC ...
- dart基础语法
.关于 runApp() 上面的实例代码中使用了 runApp() 方法,runApp 方法接收的指定参数类型为 Widget,即: runApp(Widget).在 Flutter 的组件树(wid ...
- 如何安装整个linux系统中所需要的mp3播放库插件? 可以在安装rpmfusion仓库后直接通过dnf install进行按照就可以了
在vi的界面中, 前面的数字, 表示一行. 而对于中文而言, 并不一定是"一个文本行"就是一行, 而是以 回车(硬回车)为标志, 来判定一行的. 而dd, yy等也是以" ...
- kafka丢失和重复消费数据
Kafka作为当下流行的高并发消息中间件,大量用于数据采集,实时处理等场景,我们在享受他的高并发,高可靠时,还是不得不面对可能存在的问题,最常见的就是丢包,重发问题. 1.丢包问题:消息推送服务,每天 ...
- C++变量的默认初始化规则
定义没有初始化式的变量时,系统有时候会帮我们初始化变量.系统如何初始化取决于变量的类型以及变量定义的位置. 内置类型变量是否自动初始化取决于变量定义的位置.函数体外定义的变量初始成0:函数体内定义的变 ...
- CommandLineParser命令行解析类
目的:方便用户在命令行使用过程中减少工作量 以前版本没这个类时,如果要运行带参数的.exe,必须在命令行中输入文件路径以及各种参数,并且输入的参数格式要与代码中的if语句判断内容格式一样,一不小心就输 ...
- spring-tool-suite使用教程,并创建spring配置文件
本文为博主原创,未经允许不得转载: 在应用springMVC框架的时候,每次创建spring的xml配置文件时,需要很多步骤,非常麻烦. 所以spring提供了spring-tool-suite插件, ...
- js 模块化规范
模块规范 CommonJS module.exports, exports 导出模块 require 加载模块, CommonJS 同步,服务端.实践者: nodejs ES6 export, exp ...
- HDU 5245 Joyful(期望)
http://acm.hdu.edu.cn/showproblem.php?pid=5245 题意: 给出一个n*m的矩阵格子,现在有k次操作,每次操作随机选择两个格子作为矩形的对角,然后将这范围内的 ...