docker环境下构建flannel 网络
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 网络的更多相关文章
- docker 环境下创建 overlay 网络方案
一.环境 三台机器,其中一台安装 consul(192.168.1.21), 两台创建网络(192.168.1.32,33) 二.实现步骤 1.构建环境 1)三台机器部署docker环境 2)选择一台 ...
- docker环境下solrcloud+zookeeper集群部署教程
前言:两个月前的16年11月份完成的配置,使用的solr6.1和zookeeper3.4,刚刚写成blog,目前版本可能有小版本的变化. 本例完成结果为:在docker环境下部署solrcloud集群 ...
- 如何在 Docker 环境下自动给 .NET 程序生成 Dump
前言 之前"一线码农"大佬有写文章介绍了如何在 windows 下自动 dump,正好手里有个在 docker 环境下 dump 的需求,所以在参考大佬文章的基础上,有了本篇. ...
- Win7+VMware Workstation环境下的CentOS-Linux网络连接设置
Win7+VMware Workstation环境下的CentOS-Linux网络连接设置 http://blog.sciencenet.cn/blog-430991-507041.html 近日 ...
- Docker环境下的Mysql8 实现主从数据库数据同步方案
本文记录下通过MySQL Replication在Docker环境下,通过多个容器 实现数据库主从配置. MySQL Replication就不多解释了,简单说就是MySQL非常出色的一个功能,该功能 ...
- docker环境下solr6.0配置(中文分词+拼音)
前言:这篇文章是基于之前的“linux环境下配置solr5.3详细步骤”(http://www.cnblogs.com/zhangyuan0532/p/4826740.html)进行扩展的.本篇的步骤 ...
- Mac+Docker环境下xdebug的配置
由于容器化的需要,前几天我本地也换成了docker环境.就研究了一下docker环境下phpstorm和xdebug的配置. http://www.mmfei.com/?p=453 这个博客给出了一个 ...
- CentOS6.8环境下搭建yum网络仓库
CentOS6.8环境下搭建yum网络仓库 本文利用ftp服务,在CentOS6.8系统下搭建一个yum仓库,然后用另一台虚拟机访问该仓库.并安装程序包 安装ftp服务 查询ftp服务是否安装 [ro ...
- Elasticsearch Docker环境下安装
Elasticsearch Docker环境下安装 Daemon镜像配置的是https://registry.docker-cn.com Linux:vi /etc/docker/daemon.jso ...
随机推荐
- [翻译] WZFlashButton
WZFlashButton This is a custom button with flash-like effect. Inspired by Ripple Effect. 这是一个自定义的按钮, ...
- Java学习---JFreeChart动态图表
JFreeChart是Java中开源的制图组件,主要用于生成各种动态图表.在Java的图形报表技术中,JFreeChart组件提供了方便.快捷.灵活的制图方法.作为一个功能强大的图形报表组件,JFre ...
- 关于Class类的getResource().getPath()方法
程序中配置文件如果放置在classes文件夹,那么我们就可以使用Class类的getResource().getPath()方法获取文件路径. 例如: String path = DBUtil.cla ...
- cheerio数据抓取
很多语言都能写个爬虫抓取数据,js自然也可以,使用cheerio可以支持css检索,较快捷的获取需要的数据.首先,先把node.js给安装了.可到官网下载.安装好node.js后,使用npm安装che ...
- .Net Intelligencia.UrlRewriter 重定向参数中文支持配置方法
在使用.Net 官方 Url重定向组件时,发现若原地址包含中文,如:http://localhost/首页.html 重定向为:http://localhost/index.aspx?id=首页 时 ...
- LeetCode: Word Ladder II [127]
[题目] Given two words (start and end), and a dictionary, find all shortest transformation sequence(s) ...
- 软件分享:将应用一键打包成dmg文件
简介 苹果软件开发完成后,都要打包成dmg文件.通常的做法也许是到系统自带的磁盘工具里制作dmg文件,但这样做比较繁琐,尤其是要打包多个应用时,每次只能制作一个dmg文件很麻烦.分享一个很好用很方便的 ...
- iOS获取当前连接的wifi信息
导入框架CaptiveNetwork #import <SystemConfiguration/CaptiveNetwork.h> 获取当前连接的wifi信息 // 只能获取当前的SSID ...
- HDU 1198 Farm Irrigation(并查集,自己构造连通条件或者dfs)
Farm Irrigation Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- Reading SBAR SDN flow-Based monitoring and Application Recognition
概要 在sdn下,控制平面基于网络测量的的数据控制网络,而细粒度的管理得益于细粒度的测量数据.针对sdn环境下的细粒度测量(识别具体应用程序),可以实现对细粒度的流量管控. 设计了识别系统SBAR,对 ...