准备三台主机
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
配置基本一致.
拷贝解压后的文件到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通说明安装成功!