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. [翻译] WZFlashButton

    WZFlashButton This is a custom button with flash-like effect. Inspired by Ripple Effect. 这是一个自定义的按钮, ...

  2. Java学习---JFreeChart动态图表

    JFreeChart是Java中开源的制图组件,主要用于生成各种动态图表.在Java的图形报表技术中,JFreeChart组件提供了方便.快捷.灵活的制图方法.作为一个功能强大的图形报表组件,JFre ...

  3. 关于Class类的getResource().getPath()方法

    程序中配置文件如果放置在classes文件夹,那么我们就可以使用Class类的getResource().getPath()方法获取文件路径. 例如: String path = DBUtil.cla ...

  4. cheerio数据抓取

    很多语言都能写个爬虫抓取数据,js自然也可以,使用cheerio可以支持css检索,较快捷的获取需要的数据.首先,先把node.js给安装了.可到官网下载.安装好node.js后,使用npm安装che ...

  5. .Net Intelligencia.UrlRewriter 重定向参数中文支持配置方法

    在使用.Net 官方 Url重定向组件时,发现若原地址包含中文,如:http://localhost/首页.html 重定向为:http://localhost/index.aspx?id=首页  时 ...

  6. LeetCode: Word Ladder II [127]

    [题目] Given two words (start and end), and a dictionary, find all shortest transformation sequence(s) ...

  7. 软件分享:将应用一键打包成dmg文件

    简介 苹果软件开发完成后,都要打包成dmg文件.通常的做法也许是到系统自带的磁盘工具里制作dmg文件,但这样做比较繁琐,尤其是要打包多个应用时,每次只能制作一个dmg文件很麻烦.分享一个很好用很方便的 ...

  8. iOS获取当前连接的wifi信息

    导入框架CaptiveNetwork #import <SystemConfiguration/CaptiveNetwork.h> 获取当前连接的wifi信息 // 只能获取当前的SSID ...

  9. HDU 1198 Farm Irrigation(并查集,自己构造连通条件或者dfs)

    Farm Irrigation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)T ...

  10. Reading SBAR SDN flow-Based monitoring and Application Recognition

    概要 在sdn下,控制平面基于网络测量的的数据控制网络,而细粒度的管理得益于细粒度的测量数据.针对sdn环境下的细粒度测量(识别具体应用程序),可以实现对细粒度的流量管控. 设计了识别系统SBAR,对 ...