centos7下安装docker(15.4跨主机网络-flannel)

Posted 无踪无影

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了centos7下安装docker(15.4跨主机网络-flannel)相关的知识,希望对你有一定的参考价值。

flannel是CoreOS开发的容器网络解决方案,flannel为每一个host分配一个subnet,容器从这些subnet中分配IP,这些IP可以在host之间路由,容器无需NAT和port mapping就可以跨主机通信。

每个subnet都是一个更大的IP池中划分的,flannel会在每个主机上运行一个叫flanned的agent,其职责就是从池子中分配subnet。为了在个主机之间共享,flannel用etcd(与consul类似的key-value分布式还素据库)存放网络状态,已分配的subnet,host的IP等信息

 

数据包如何在主机之间转发是由backend实现的,flannel提供了多种backend,最常用的有vxlan和host-gw,我们重点学习xvlan和host-gw,其他backend,参考:https://github.com/coreos/flannel

试验环境:盗图

etcd部署在192.168.7.222,docker1和docker2上部署flanneld

先来配置etcd,注:我们本次使用的方法是直接在192.168.7.222上运行脚本,当然也可以用容器来运行etcd,但是由于etcd所需的镜像在国外网站才能下载到,所以本次不使用容器的方法

容器的方法请参考:https://github.com/coreos/etcd/releases/

使用在linu本地创建etcd:

1.在192.168.7.222上运行如下脚本:本脚本在usr/local/bin下

ETCD_VER=v3.2.9

# choose either URL
GOOGLE_URL=https://storage.googleapis.com/etcd
GITHUB_URL=https://github.com/coreos/etcd/releases/download
DOWNLOAD_URL=${GOOGLE_URL}

rm -f /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
rm -rf /tmp/etcd-download-test && mkdir -p /tmp/etcd-download-test

curl -L ${DOWNLOAD_URL}/${ETCD_VER}/etcd-${ETCD_VER}-linux-amd64.tar.gz -o /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz
tar xzvf /tmp/etcd-${ETCD_VER}-linux-amd64.tar.gz -C /tmp/etcd-download-test --strip-components=1

/tmp/etcd-download-test/etcd --version
<<COMMENT
etcd Version: 3.2.9
Git SHA: f1d7dd8
Go Version: go1.8.4
Go OS/Arch: linux/amd64
COMMENT

ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl version
<<COMMENT
etcdctl version: 3.2.9
API version: 3.2
COMMENT

 

启动etcd服务:

/tmp/etcd-download-test/etcd也可在/tmp/etcd-dowmload-test/etcd下执行./etcd

 

测试etcd是否可用

ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 put foo bar
ETCDCTL_API=3 /tmp/etcd-download-test/etcdctl --endpoints=localhost:2379 get foo

可以正常在etcd中存取数据了

 

安装和配置flannel

flannel没有现成的可执行文件,必须自己build,最可靠的办法是在Docker容器中build。不过用于build的docker镜像托管在grc.io,国内可能无法直接访问

使用二进制文件包配置flannel

1.部署flannel环境;

yum install kernel-headers golang gcc

2.安装flannel

 

 3.在etcd中设置变量:etcdctl set /coreos.com/network/config \'{ "Network": "172.17.0.0/16" }\'

4.在flannel(192.168.7.235)配置flannel

FLANNEL_ETCD_ENDPOINTS="http://192.168.7.222:2379"     ETCD所在的服务器的IP

FLANNEL_ETCD_PREFIX="/coreos.com/network"       

 

 


 

以上是关于centos7下安装docker(15.4跨主机网络-flannel)的主要内容,如果未能解决你的问题,请参考以下文章

centos7下安装docker(15.3跨主机网络-macvlan)

centos7下安装docker(14.2跨主机网络-overlay)

centos7下安装docker(15.7容器跨主机网络---calico)

docker之跨主机通信

Docker集群下,如何用Flannel实现容器互联

Docker Centos7 下建立 Docker 桥接网络