flannel 是coreos 开发的网络解决方案,为每一台主机分配一个 subnet,容器从此subnet 中分配ip,ip可以在主机间路由。每个subnet从更大的ip池中划分,为了在各个主机间共享信息,用etcd 存放网络配置信息。数据包在主机间转发是backend 决定的,flannel提供多种backend,包括vxlan ,host-gw。

一、环境

三台主机,一台etcd 主机,作为共享数据使用;两台主机安装docker。

做主机ip和主机名的 hosts文件映射,然后拷贝至三台机器

二、实施

1.软件准备

1)安装etcd

在 github.com 上下载,解压,

cp  etcd*  /usr/local/bin

启动etcd,

etcd --listen-client-urls http://0.0.0.0:2379  --advertise-client-urls  http://0.0.0.0:2379

测试是否能使用,etcdctl  -endpoints=cloud_server:2379  set  foo  bar ;   etcdctl  get   foo ,能够得到 foo  的值  bar ,成功。

2)构建flannel

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

docker rmi cloudman6/kube-cross:v1.6.2-2

下载flannel,

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

开始构建

make dist/flanneld-amd64,过程中会下载golang:1.10.3镜像

生成执行程序 flanneld-amd64

拷贝至两台主机相应目录

scp flanneld-amd64 cloud_client1:/usr/local/bin/flanneld

scp flanneld-amd64 cloud_client2:/usr/local/bin/flanneld

2.启动flannel,在两台主机分别执行

flanneld -etcd-endpoints=http://cloud_server:2379  -iface=eth0 -etcd-prefix=/docker-test/network

每台主机会添加一块flannel.1的网卡,并添加一条到另一台主机的路由

在网络拓扑中,flannel没有创建新的 docker网络,而是直接使用默认的bridge  网络,同一主机的容器通过 docker0连接,跨主机通过flannel.1转发。

3.将容器连接到 flannel

在主机1中执行docker run -itd --name bbox1 busybox

在主机2中执行 docker run -itd --name bbox2 busybox

1)网络连通性

docker exec  bbox1  ping  -c  2  bbox2 的ip地址

能ping 通,数据流的走向为: bbox1的ip找网关docker0,docker0找 flannel.1,再到主机的 ens33, 连通主机2的 ens33,到flannel.1到docker0,再到bbox2的ip;

flannel没有dns,flannel网络内主机可以相互路由,将主机上的 docker0容器网络组成了一个大的网络,实现跨主机通信,没有网络隔离。

2)与外网通信

容器通过docker0 NAT 访问外网;外网通过主机端口映射访问容器。

docker环境下构建flannel 网络的更多相关文章

  1. docker 环境下创建 overlay 网络方案

    一.环境 三台机器,其中一台安装 consul(192.168.1.21), 两台创建网络(192.168.1.32,33) 二.实现步骤 1.构建环境 1)三台机器部署docker环境 2)选择一台 ...

  2. docker环境下solrcloud+zookeeper集群部署教程

    前言:两个月前的16年11月份完成的配置,使用的solr6.1和zookeeper3.4,刚刚写成blog,目前版本可能有小版本的变化. 本例完成结果为:在docker环境下部署solrcloud集群 ...

  3. 如何在 Docker 环境下自动给 .NET 程序生成 Dump

    前言 之前"一线码农"大佬有写文章介绍了如何在 windows 下自动 dump,正好手里有个在 docker 环境下 dump 的需求,所以在参考大佬文章的基础上,有了本篇. ​ ...

  4. Win7+VMware Workstation环境下的CentOS-Linux网络连接设置

    Win7+VMware Workstation环境下的CentOS-Linux网络连接设置 http://blog.sciencenet.cn/blog-430991-507041.html   近日 ...

  5. Docker环境下的Mysql8 实现主从数据库数据同步方案

    本文记录下通过MySQL Replication在Docker环境下,通过多个容器 实现数据库主从配置. MySQL Replication就不多解释了,简单说就是MySQL非常出色的一个功能,该功能 ...

  6. docker环境下solr6.0配置(中文分词+拼音)

    前言:这篇文章是基于之前的“linux环境下配置solr5.3详细步骤”(http://www.cnblogs.com/zhangyuan0532/p/4826740.html)进行扩展的.本篇的步骤 ...

  7. Mac+Docker环境下xdebug的配置

    由于容器化的需要,前几天我本地也换成了docker环境.就研究了一下docker环境下phpstorm和xdebug的配置. http://www.mmfei.com/?p=453 这个博客给出了一个 ...

  8. CentOS6.8环境下搭建yum网络仓库

    CentOS6.8环境下搭建yum网络仓库 本文利用ftp服务,在CentOS6.8系统下搭建一个yum仓库,然后用另一台虚拟机访问该仓库.并安装程序包 安装ftp服务 查询ftp服务是否安装 [ro ...

  9. Elasticsearch Docker环境下安装

    Elasticsearch Docker环境下安装 Daemon镜像配置的是https://registry.docker-cn.com Linux:vi /etc/docker/daemon.jso ...

随机推荐

  1. C#的抽象类和接口的区别,在什么时候使用才合适?

    理解抽象类  abstract class和interface在c#语言中都是用来进行抽象类(本文 中的抽象类并非从abstract class翻译而来,它表示的是一个抽象体,而abstract cl ...

  2. 沉淀再出发:java的文件读写

    沉淀再出发:java的文件读写 一.前言 对于java的文件读写是我们必须使用的一项基本技能,因此了解其中的原理,字节流和字符流的本质有着重要的意义. 二.java中的I/O操作 2.1.文件读写的本 ...

  3. LeetCode算法题 菜鸟总结

    近期准备抽出一点时间,刷一些题防止手生,毕竟codemonkey,吃饭的手艺不能忘. ······································· 基本的题目都是基于java语言解答 ...

  4. app.config/web.config配置文件增删改

    一.概述 应用程序配置文件,对于asp.net是 web.config,对于WINFORM程序是 App.Config(ExeName.exe.config). 配置文件,对于程序本身来说,就是基础和 ...

  5. 《java编程思想》有必要买吗

    <java编程思想>有必要买吗 1.看到过好多个这样的提问,其实我一般真的不那么容易分享自己的这点心得的,这是第一次回答这样的“推荐书籍”方面的问题. 我买编程方面的书籍,有一个非常清晰. ...

  6. 021.1 IO流——File类

    ########################################IO流:    IO:用于处理设备上的数据的技术.设备:内存,硬盘,光盘    流:系统资源,Windows系统本身就可 ...

  7. SQL简单基础(1)

    对于SQL不再做过多的介绍,毕竟作为一个初学者对于SQL(结构化查询语言)也好,关系型数据库也好理解都并不是很深,只知道一些基本的概念. 本系列旨在介绍一些简单开发中用得上的SQL语句以及其使用方法, ...

  8. 搭建 PhoneGap 开发环境

    一.JDK 下载以及安装.配置 参考:http://www.cnblogs.com/LO-ME/p/3530345.html 二.Android开发环境的搭建 参考:http://www.cnblog ...

  9. 阿里云服务器ECS LAMP环境安装(Ubuntu)

    所周知如果要搭建一个网站lamp环境必不可少,但是阿里云初始的时候没有自带lamp环境,原本阿里云自带的包也已经失效了,所以需要自己来安装.但是网上大部分博客都有些老,于是中间遇到了一些小坑,今天就在 ...

  10. js 调用 oc 的解释

    JavaScriptCore NSInvocation js解释器在解释函数调用时,会在执行环境进行函数搜索,主调者类型判定: 如果是js调用,直接解释执行: 如果是oc调用,则将调用打包成NSInv ...