1.flannel为了避免ip重复分配,使用etcd解决冲突,目前测试,使用单机版etcd
2. etcdctl --endpoints http://10.1.13.13:2379 set /coreos.com/network/config '{"Network": "10.0.0.0/16", "SubnetLen": 24, "SubnetMin": "10.0.1.0","SubnetMax": "10.0.20.0", "Backend": {"Type": "vxlan"}}'
Network: 用于指定Flannel
地址池, 整个overlay
网络为10.0.0.0/16
网段
SubnetLen: 用于指定分配给单个宿主机的docker0
的ip
段的子网掩码的长度
SubnetMin: 用于指定最小能够分配的ip
段
SudbnetMax: 用于指定最大能够分配的ip段,在上面的示例中,表示每个宿主机可以分配一个24位掩码长度的子网,可以分配的子网从10.0.1.0/24
到10.0.20.0/24
,也就意味着在这个网段中,最多只能有20
台宿主机Backend: 用于指定数据包以什么方式
Backend: 用于指定数据包以什么方式转发,默认为udp
模式, 这里使用的是vxlan
模式
3. 安装flannel:
1)关闭docker:
systemctl stop docker
2)下载/启动flanel:
cd /root/flanel;
wget https://github.com/coreos/flannel/releases/download/v0.11.0/flannel-v0.11.0-linux-amd64.tar.gz;
tar -zxvf flannel-v0.11.0-linux-amd64.tar.gz
cp flanneld mk-docker-opts.sh /usr/local/bin/
/usr/local/bin/flanneld --etcd-endpoints="http://10.1.13.13:2379"
4. 启动后可以看到多了一个flannel.1设备,地址是10.0.12.0,并且它的mac地址已经存到了etcd中:
etcd
分配了一个子网10.0.12.0/24
, 所以该宿主机上的docker
网络就使用该网段. 所以需要去配置docker0
的配置. flannel
也提供了修改docker0
的网络配置方法, 就是修改docker
的启动命令指定网络
5.
启动flannel后,会自动生成 /run/flannel/subnet.env 这个文件
vim /run/flannel/subnet.env
FLANNEL_NETWORK=10.0.0.0/16
FLANNEL_SUBNET=10.0.12.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=false
6.
vim /run/docker_opts.env
根据flannel生成的配置文件,来更高docker的配置
DOCKER_OPTS=" --bip=10.0.12.1/24 --ip-masq=true --mtu=1450"
7.vim /lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd $DOCKER_OPTS
8.
9.验证:
ping