关于flannel插件的原理园内有许多其他的优秀文章,可以参考。此处不做描述。
二进制部署步骤:
1.到github上下载flannel二进制包:https://github.com/flannel-io/flannel/releases
2.解压后得到两个文件:
flanneld ——————> 作用:flannel的服务主程序
mk-docker-opts.sh ——>作用:讲flannel主程序创建的subnet.env文件改写成可被符合dockerd服务规范的system参数文件
3.编辑/usr/lib/systemd/system/flannel.service
4.在etcd内设置subnet的信息:
提示:由于flanneld仅支持etcdv2版本的api命令,而且v2和新的v3不兼容,所以设置的时候也需要使用etcdctl⒉版本的命令,否则,在flanneld启动后会出现"Couldn't fetch network config: SubnetMax is not in the range of the Network"的错误。
查看已插入的数据:
5.启动flannel:
systemctl start flannel
查看flanneld生成的/cloud/k8s/conf/subnet.env
查看flanneld生成的/cloud/k8s/conf/docker-subnet.env
可以发现,docker-subnet.env只是经过mk-docker-opts.sh的处理可被systemd调用的EnvironmentFile参数文件。
6.编辑/usr/lib/systemd/system/docker.service
7.启动dockerd
systemctl start docker
8.查看docker0网卡
9.查看etcd的网段分配记录:
避坑小贴士:通常情况下是已经启动了dockerd服务,已经分配了172.17.0.0网段的IP地址给了docker0,此时再想更换docker0的IP地址,会发现即使按照上面的方法设置重启了docker服务后,docker0网卡的IP依然后默认的172.17.0.0网段的。其中一个重要的原因是,docker服务中存在未删除的docker容器,包括没有启动的容器,必须全部删除已经存在的容器后再systemctl restart docker,才能修改docker0的默认地址。换句话说,docker --bip 只有在没有容器存在的情况下,才能起作用。当然也可以使用“重启系统”的终极大招。