准备三台主机

host1  10.0.0.5

host2  10.0.0.6

host3  10.0.0.7

etcd

由于flannel为了避免ip重复分配, 使用了etcd来解决冲突. LZ使用单机的etcd,集群请到官网查看。

1、在host安装etcd数据库

yum -y install etcd

2、修改配置

vim /etc/etcd/etcd.conf

ETCD_LISTEN_CLIENT_URLS="http://localhost:2379"==》ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379"

3、重启etcd

systemctl restart etcd

4、检查etcd健康状态

etcdctl -C http://10.0.0.5:2379 cluster-health

5、添加数据

etcdctl --endpoints=http://10.0.0.5:2379 set /coreos.com/network/config '{ "Network": "172.16.0.0/16", "Backend": {"Type": "vxlan"}}'

flannel

1、关闭docker

因为该宿主机的docker使用的子网网络是从flannel中获得, 而不是docker默认的172.17.0.1/16, 所以flannel需要在docker前启动. 以master配置为例, worker配置基本一致.
systemctl stop docker
2、下载flannel
wget https://github.com/coreos/flannel/releases/download/v0.13.0/flannel-v0.13.0-linux-amd64.tar.gz 
 lz在/root/flannel目录下解压的,如下图
 

 

 拷贝解压后的文件到bin目录:cp flanneld mk-docker-opts.sh /usr/local/bin/

3、启动flannel

/usr/local/bin/flanneld --etcd-endpoints="http://10.0.0.5:2379"

 

 

 启动后查看网络情况:

cat /run/flannel/subnet.env
FLANNEL_NETWORK=10.0.0.0/16
FLANNEL_SUBNET=10.0.13.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=false
 /root/flannel/mk-docker-opts.sh -c
 cat /run/docker_opts.env
DOCKER_OPTS=" --bip=10.0.13.1/24 --ip-masq=true --mtu=1450"
4、修改docker启动文件

vim /lib/systemd/system/docker.service
...
EnvironmentFile=/run/docker_opts.env
ExecStart=/usr/bin/dockerd $DOCKER_OPTS
...
systemctl daemon-reload
systemctl restart docker

5、分别查看host2,host3的网卡情况

 

 

 

 

 

 6、分别在两个机器启动服务测试网络通不通

10.0.0.6 : docker run -itd --name host2 busybox;   docker exec host2 ping 172.16.44.2

10.0.0.7 : docker run -itd --name host3 busybox ;  docker exec host3 ping 172.17.38.2

 能ping通说明安装成功!

 
参考:https://www.jianshu.com/p/ee969aaccdfc