Docker之Flannel管理网络-yellowcong

云计算 waitig 605℃ 百度已收录 0评论

Docker中管理网络的工具的确挺多的,但是比如Weave的性能相对 较差,而且有虚拟机断网的bug. pipework 的ip没次重启就需要重新的配置,这也是挺麻烦的一件事,所以Flannel还是比较推荐使用的。

网络拓扑图可以看出 ,数据发送到了物理节点后,走的是Flannel,然后分发到自己节点里面的docker容器里面,他们是通过维护一张表,来保证ip的唯一,通过将ip的信息存在etcd上

这里写图片描述

1、安装etcd

1.1安装etcd

我这个地方的安装方式是单节点安装

#安装etcd
yum install etcd

#配置文件夹 ,配置etcd集群操作 ,可以修改端口,但是我们没有啥必要去修改他
vim /etc/etcd/etcd.conf

#启动服务
service etcd start

1.2 配置ETCD

我这个地方是单节点的,也没啥配置操作

ETCD监听的服务端口默认是2379 ,需要 记得开启防火墙
这里写图片描述

测试ETCD好不好用

#创建文件夹
etcdctl mkdir /test

#查看文件夹的信息
etcdctl ls /

这里写图片描述

1.3 设定网段

确定etcd可以使用之后,我们需要设置分配给docker网络的网段

#在etcd中添加一条数据
etcdctl mk /coreos.com/network/config '{"Network":"172.17.0.0/16", "SubnetMin": "172.17.1.0", "SubnetMax": "172.17.254.0"}'

这里写图片描述

1.4开启2379端口

#编辑iptables
vim /etc/sysconfig/iptables

#添加规则链条
-A INPUT -p tcp -m tcp --dport 2379 -m state --state NEW,ESTABLISHED -j ACCEPT

#重启防火墙
service iptables restart

2、安装flannel

2.1安装flannel

yum install flannel

2.2配置flannel的etcd服务器

#编辑配置文件
vi /etc/sysconfig/flanneld

#配置属性 ,http://192.168.66.110:2379 是本机的etcd服务,也可以别的地方的,都行
FLANNEL_ETCD_ENDPOINTS="http://127.0.0.1:2379"

#注意这个必须和上面Etcd配置的要一样,不然flannel启动不了
FLANNEL_ETCD_PREFIX="/coreos.com/network"

这里写图片描述

2.3启动Flannel

#修改配置文件后,需要重新加载
systemctl daemon-reload

#开启flanneld 服务
service flanneld start

#重启服务
service flanneld restart

2.4配置信息查看

我们查看网桥,看到了flannel0,而且ip的地址端是我们自己指定的172.17.0.0/16,而且还生成了配置文件/run/flannel/subnet.env/run/flannel/docker 存储了这个服务器端信息。

这里写图片描述

cat /run/flannel/subnet.env 配置信息里面,看到了我们的网段配置。注意其中的“–bip=172.17.8.1/24”这个参数,它限制了所在节点容器获得的IP范围。这个IP范围是由Flannel自动分配的,由Flannel通过保存在Etcd服务中的记录确保它们不会重复

这里写图片描述

cat /run/flannel/docker配置看到,配置的网段已经生成在这个地方了

这里写图片描述

3、配置Docker

systemctl daemon-reload

#重启docker
systemctl restart docker 

我们会看到docker的ip已经修改成我们Flannel配置的IP了

这里写图片描述

问题集合

1、配置完Flannel后,启动失败

FLANNEL_ETCD_PREFIX很可能是/atomic.io/network,将其改为/coreos.com/network,或者也可以通过-etcd-prefix指定。

这里写图片描述

修改配置文件(推荐)
vi /etc/sysconfig/flanneld

# Flanneld configuration options

# etcd url location.  Point this to the server where etcd runs
FLANNEL_ETCD_ENDPOINTS="http://127.0.0.1:2379"

# etcd config key.  This is the configuration key that flannel queries
# For address range assignment
FLANNEL_ETCD_PREFIX="/coreos.com/network"

# Any additional options that you want to pass
#FLANNEL_OPTIONS=""

这里写图片描述


本文由【waitig】发表在等英博客
本文固定链接:Docker之Flannel管理网络-yellowcong
欢迎关注本站官方公众号,每日都有干货分享!
等英博客官方公众号
点赞 (0)分享 (0)