在上一篇中咱们已经部署了etcd集群,咱们仍然在以前的基础之上作配置,全部的环境仍是沿用以前的,在这就很少说了。html
Flannel实质上是一种“覆盖网络(overlay network)”,也就是将TCP数据包装在另外一种网络包里面进行路由转发和通讯,目前已经支持UDP、VxLAN、AWS VPC和GCE路由等数据转发方式。
---------------------------------------------------------------------------------------------------linux
所谓的覆盖网络:覆盖网络(overlay network [1] )简单说来覆盖网络就是应用层网络,它是面向应用层的,不考虑或不多考虑网络层,物理层的问题。覆盖网络容许对没有IP地址标识的目的主机路由信息,例如:Freenet和DHT(分布式哈希表)能够路由信息到一个存储特定文件的结点,而这个结点的IP地址事先并不知道。好比说,P2P就是一种覆盖网络P2P是集中分散分形概念的同行对等覆盖网络,网络覆盖就是指用户可以接收到网络信号的范围。好比说网络覆盖10米半径,就是指以发射点为圆心10米半径内的设备均可以收到信号。一般指无线信号网络,如手机网络,无线网络等设备的有效信号接收范围web
数据从源容器中发出后,经由所在主机的docker0虚拟网卡转发到flannel0虚拟网卡,这是个P2P的虚拟网卡,flanneld服务监听在网卡的另一端。
Flannel经过Etcd服务维护了一张节点间的路由表,详细记录了各节点子网网段 。
源主机的flanneld服务将本来的数据内容UDP封装后根据本身的路由表投递给目的节点的flanneld服务,数据到达之后被解包,而后直接进入目的节点的flannel0虚拟网卡,而后被转发到目的主机的docker0虚拟网卡,最后就像本机容器通讯一下的有docker0路由到达目标容器。docker
将flannel二进制文件解压并将文件移动到相应位置,flannel压缩包能够在etcd篇中的百度网盘地址处获取shell
tar -zxvf flannel-v0.10.0-linux-amd64.tar.gz mkdir /k8s/flannel/{bin,config,ssl} -p mv flanneld mk-docker-opts.sh /k8s/flannel/bin/
向 etcd 写入集群 Pod 网段信息网络
/k8s/etcd/bin/etcdctl \ --ca-file=/k8s/etcd/ssl/ca.pem --cert-file=/k8s/etcd/ssl/server.pem \ --key-file=/k8s/etcd/ssl/server-key.pem \ --endpoints="http://192.168.1.250:2379,http://192.168.1.251:2379,http://192.168.1.252:2379" \ set /coreos.com/network/config '{ "Network": "10.10.0.0/16", "Backend": {"Type": "vxlan"}}'
cd /k8s/etcd/ssl/ cp *.pem /k8s/flannel/ssl/ vi /k8s/flannel/config/flanneld FLANNEL_OPTIONS="--etcd-endpoints=http://192.168.1.250:2379,http://192.168.1.251:2379,http://192.168.1.252:2379 -etcd-cafile=/k8s/flannel/ssl/ca.pem -etcd-certfile=/k8s/flannel/ssl/server.pem -etcd-keyfile=/k8s/flannel/ssl/server-key.pem"
建立 flanneld 的 systemd unit 文件分布式
vi /usr/lib/systemd/system/flanneld.service [Unit] Description=Flanneld overlay address etcd agent After=network-online.target network.target Before=docker.service [Service] Type=notify EnvironmentFile=/k8s/flannel/config/flanneld ExecStart=/k8s/flannel/bin/flanneld --ip-masq $FLANNEL_OPTIONS ExecStartPost=/k8s/flannel/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/subnet.env Restart=on-failure [Install] WantedBy=multi-user.target
修改Docker文件,在docker启动处指定子网段svg
vi /usr/lib/systemd/system/docker.service
启动flannel,重启dockerspa
systemctl daemon-reload
systemctl enable flanneld
systemctl start flanneld
systemctl restart docker
查看启动状态rest
systemctl status flanneld journalctl -xe -u flanneld
日志都是Info级别
查看是否生效
ip add
若出现如下状态证实成功
cd /k8s/ scp -r flannel 192.168.1.251:/k8s/ scp -r flannel 192.168.1.252:/k8s/ scp /usr/lib/systemd/system/docker.service 192.168.1.251:/usr/lib/systemd/system/docker.service scp /usr/lib/systemd/system/docker.service 192.168.1.252:/usr/lib/systemd/system/docker.service scp /usr/lib/systemd/system/flanneld.service 192.168.1.251:/usr/lib/systemd/system/flanneld.service scp /usr/lib/systemd/system/flanneld.service 192.168.1.252:/usr/lib/systemd/system/flanneld.service> 感谢k8s中文社区中 https://www.kubernetes.org.cn/4963.html 文章提供的信息帮助