安装配置 flannel - 每天5分钟玩转 Docker 容器技术(59)

上一节我们部署了 etcd,本节安装和配置 flannel。

build flannel

flannel 没有现成的执行文件可用,必须自己 build,最可靠的方法是在 Docker 容器中 build。不过用于做 build 的 docker 镜像托管在 gcr.io,国内可能无法直接访问,为方便大家,我把它 mirror 到了 docker hub,构建步骤如下:

  1. 下载并重命名 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

  2. 下载 flannel 源码。

    git clone https://github.com/coreos/flannel.git

  3. 开始构建。

    cd flannel

    make dist/flanneld-amd64

  4. 将 flanneld 执行文件拷贝到 host1 和 host2。

    scp dist/flanneld-amd64 192.168.56.104:/usr/local/bin/flanneld

    scp dist/flanneld-amd64 192.168.56.105:/usr/local/bin/flanneld

将 flannel 网络的配置信息保存到 etcd

先将配置信息写到文件 flannel-config.json 中,内容为:

{

  "Network": "10.2.0.0/16",

  "SubnetLen": 24,

  "Backend": {

    "Type": "vxlan"

  }

}

  1. Network 定义该网络的 IP 池为 10.2.0.0/16

  2. SubnetLen 指定每个主机分配到的 subnet 大小为 24 位,即10.2.X.0/24

  3. Backend  vxlan,即主机间通过 vxlan 通信,后面我们还会讨论host-gw

将配置存入 etcd:
etcdctl --endpoints=192.168.56.101:2379 set /docker-test/network/config < flannel-config.json

/docker-test/network/config 是此 etcd 数据项的 key,其 value 为 flannel-config.json 的内容。key 可以任意指定,这个 key 后面会作为 flanneld 的一个启动参数。执行 etcdctl get 确保设置成功。

启动 flannel

在 host1 和 host2 上执行如下命令:
flanneld -etcd-endpoints=http://192.168.56.101:2379 -iface=enp0s8 -etcd-prefix=/docker-test/network

-etcd-endpoints 指定 etcd url。

-iface 指定主机间数据传输使用的 interface。

-etcd-prefix 指定 etcd 存放 flannel 网络配置信息的 key。

host1 上输出如下:

① enp0s8 被选作与外部主机通信的 interface。

② 识别 flannel 网络池 10.2.0.0/16。

③ 分配的 subnet 为 10.2.40.0/24。

flanneld 启动后,host1 内部网络会发生一些变化:

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

  2. host1 添加了一条路由:目的地址为 flannel 网络 10.2.0.0/16 的数据包都由 flannel.1 转发。 

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

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

flannel 已经就绪,下一节演示如何在 Docker 中使用 flannel 网络。

二维码+指纹.png

转载于:https://www.cnblogs.com/CloudMan6/p/7424858.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/572068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Golang——单元测试testing

Go语言中带有一个轻量级的测试框架testing和go test命令来实现单元测试及性能测试。单元测试可以解决 确保每个函数都是可运行且结果正确确保代码性能完好单元测试可以及时发现程序设计或实现的逻辑错误&#xff0c;使问题及早暴露&#xff0c;便于问题的定位解决&#xff0c;而…

排序算法之希尔排序

基本思想 希尔排序(Shell Sort)是插入排序的一种。也称缩小增量排序&#xff0c;是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序算法。先将整个待排序的记录序列分割成为若干子序列分别进行直接插入排序&#xff0c;待整个序列中的记录“基本有序”时&#x…

Rust——Macos安装使用

进入官网会自动检测当前是什么操作系统&#xff0c;我的是Mac&#xff0c;所以使用官网给的命令安装就可以了 终端输入&#xff1a; curl --proto https --tlsv1.2 -sSf https://sh.rustup.rs | sh # 安装过程中&#xff0c;最后一步需要输入选择&#xff0c;输入1是继续安装…

android踩坑日记1

Android四大组件-活动、服务、广播、碎片情况一应用场景&#xff1a;定时从服务器获取数据&#xff0c;然后活动或者碎片中根据最新获得的数据&#xff0c;更新UI。思考&#xff1a; 首先定时&#xff0c;想到定时器&#xff0c;推荐使用系统自带的AlertManager&#xff0c;而它…

Go_常量、iota(枚举)的使用

常量 常量是在程序运行过程中&#xff0c;其值不可以发生改变的数据&#xff0c;常量无法被获取地址 常量中的数据类型能是布尔型、数字型&#xff08;整型、浮点型和复数型&#xff09;、字符串 常量的定义是通过const关键字完成的&#xff0c;并且常量名称大写为公开&#…

pthon_函数式编程与面向对象编程的比较

函数式编程作为结构化编程的一种&#xff0c;正在受到越来越多的重视。工程中不在只是面向对象编程&#xff0c;更多的人尝试着开始使用函数式编程来解决软件工程中遇到的问题。 什么是函数式编程&#xff1f;在维基百科中给出了详细的定义&#xff0c;函数式编程&#xff08;英…

Go_方法、方法重载

方法&#xff1a; 方法是绑定在自定义类型上的&#xff0c;常用在结构体上 方法只能通过绑定的自定义类型的变量来调用&#xff0c;方法不能直接调用&#xff0c;因为方法是和类型作关联的 方法是值拷贝的传递方式&#xff0c;如果希望改变结构体变量的值&#xff0c;需要通过…

go_命令行参数Args、flag

Args&#xff1a; os.Args是一个string的切片&#xff0c;可以存储所有的命令行参数&#xff08;在终端运行才行&#xff09;&#xff0c; func main() {args : os.Argsfor i, v : range args {fmt.Println("索引&#xff1a;", i, "\t数据&#xff1a;"…

防止sql注入的方法

防止sql注入从前端的页面到后台可以分为以下几个办法&#xff1a; 1.在前端页面就可以用js过滤数据 要引入的包&#xff1a; import Java.util.regex.*; 正则表达式&#xff1a; private String CHECKSQL “^(.)\\sand\\s(.)|(.)\\sor(.)\\s$”; 判断是否匹配&#xff1a; Pat…

使用haystack实现django全文检索搜索引擎功能

前言 django是python语言的一个web框架&#xff0c;功能强大。配合一些插件可为web网站很方便地添加搜索功能。 搜索引擎使用whoosh&#xff0c;是一个纯python实现的全文搜索引擎&#xff0c;小巧简单。 中文搜索需要进行中文分词&#xff0c;使用jieba。 直接在django项目中使…

Go_输入与输出

输出的几种方式&#xff1a; fmt.Print&#xff1a;属于标准输出流&#xff0c;一般使用它来进行屏幕输出&#xff0c;但它不能换行fmt.Printf&#xff1a;可以格式化输出&#xff0c;输出不换行fmt.Println&#xff1a;输出后换行fmt.Sprint&#xff1a;返回一个格式化的字符…

3、事件响应函数(一)

一、激活销毁 void OnEnable()//每次激活脚本时调用{print("OnEnable");}void OnDisable()//脚本取消激活状态调用{print("OnDisable");}void OnDestroy()//被销毁时调用{print("OnDestroy");} 二、鼠标事件 /// <summary>/// 代码添加到需…

人人都是产品经理?

产品经理顾名思义就是产品经理。那么只要搞懂产品是什么、经理又什么什么&#xff0c;就明白了产品经理是什么。 产品是什么&#xff1a; 产品是满足需求的载体&#xff0c;能被市场、人们使用和消费&#xff0c;并能满足人们某种需求&#xff08;创造价值&#xff09;的任何东…

搭建一个简单的FTP服务器

本文介绍通过win7自带的IIS来搭建一个只能实现基本功能的FTP服务器&#xff0c;第一次装好WIN7后我愣是没整出来&#xff0c;后来查了一下网上资料经过试验后搭建成功&#xff0c;其实原理和步骤与windows前期的版本差不多&#xff0c;主要是对新的操作系统还不是很熟悉。相信用…

3D文档(BRD、MRD、PRD)怎么写

3D文档&#xff1a; 一般来说&#xff0c;BRD作为战略方向的制定&#xff0c;是最早产出的文档&#xff0c;而MRD则是在战略方向的基础上对市场进行的分析&#xff0c;同时对后续工作的方向进行一些说明和指导&#xff0c;也可以说是通过对市场环境、竞品的分析&#xff0c;明确…

需求收集、分析、管理的方法

需求&#xff1a; 什么是需求 百度百科给的解释&#xff1a;指人们在某一特定的时期内在各种可能的价格下愿意并且能够购买某个具体商品的需要。所以要想明白需求&#xff0c;还要明白另外两个概念&#xff0c;需要和欲望&#xff0c;因为从需要到需求是一个由宏观到微观的过程…

Oracle中start with...connect by子句的用法

connect by 是结构化查询中用到的&#xff0c;其基本语法是&#xff1a;select … from tablenamestart with 条件1connect by 条件2where 条件3;例&#xff1a;select * from tablestart with org_id ‘HBHqfWGWPy’connect by prior org_id parent_id;简单说来是将一个树状…

用户访谈与问卷调查怎么做

用户访谈&#xff1a; 用提问交流的方式&#xff0c;了解用户体验的过程&#xff0c;访谈内容需要根据访谈目的来确定&#xff0c;通常包括产品的使用过程、使用感受、品牌印象等&#xff0c;属于定性研究。 访谈场景&#xff1a; 接听客服电话&#xff08;轮岗&#xff0c;客服…

【hdu2825】ac自动机 + 状压dp

传送门 题目大意&#xff1a; 给你一些密码片段字符串&#xff0c;让你求长度为n&#xff0c;且至少包含k个不同密码片段串的字符串的数量。 题解&#xff1a; 因为密码串不多&#xff0c;可以考虑状态压缩 设dp[i][j][sta]表示长为i的字符串匹配到j节点且状态为sta的数量。 其…

if函数 字体自动标红_发喜糖!REPT函数和图表订婚了~~

小伙伴们早上好呀&#xff01;今天为大家分享的是REPT函数的应用实例。案例1&#xff1a;基础用法左右&#xff1a;按照给定的次数重复显示文本用法&#xff1a;REPT(文本&#xff0c;重复次数)搭配&#xff1a;Wingdings字体家族的应用案例2&#xff1a;条形图⑴ 单元格D3输入…