环境
这次使用flannel要安装对应的配置环境
etcd-v3.4.3-linux-amd64.tar.gz
flannel-v0.11.0-linux-amd64.tar.gz
systemctl disable docker 取消开机自启动
而且使用flannel 的时候,把docker 关了,因为flannel 要在docker之前启动
systemctl stop docker 或者 docker stop docker.socket 关闭docker 命令
想启动flannel 要先把etcd给启动了
开启流程是 开启etcd -> 开启flannel -> 开启docker
开启etcd
systemctl start etcd
开启flannel
systemctl start flanneld
创建 Docker 运行参数 ( 使用 flannel 提供的脚本将 subnet.env 转写成 Docker 启动参数 )
/opt/flannel/mk-docker-opts.sh -d /run/flannel/docker_opts.env -c
启动docker
systemctl start docker
Docker跨主机集群-flannel
Flannel
实质上是一种覆盖网络
(overlay network),
即表示运行在一个网上的网
(
应用层网络
),
并不依靠
ip
地址来传递消息
,
而是采用一种映射机制
,
把
ip
地址和
identifiers
做映射来资源定位。
也就是将
TCP
数据包装在另一种网络包里面进行路由转发和通信
,
目前已经支持
UDP
、
VxLAN
、
AWS VPC
和
GCE
路由等数据转发方式
Flannel
实现的容器的跨主机通信通过如下过程实现
:
- 每个主机上安装并运行etcd和flannel;
- 在etcd中规划配置所有主机的docker0子网范围;
- 每个主机上的flannel根据etcd中的配置,为本主机的docker0分配子网,保证所有主机上的docker0网段不重复,并将结果(即本主机上的docker0子网信息和本主机IP的对应关系)存入