云计算
部署Flannel容器集群网络
Overlay Network :覆盖网络并叠加在底层网络上的虚拟网络技术模型。 此网络中的主机通过虚拟链路连接
VXLAN :将源数据包封装为UDP,将基础网络的IP/MAC封装为外侧信息包头后,在以太网上传输,到达目的地后在隧道侧解除封装,将数据发送到目的地址
Flannel:Overlay网络的一种,将源数据包封装在其他网络数据包中进行路由转发和通信。 目前,支持UDP、VXLAN、AWS、VPC、GCE路由等数据传输方式
Flannel介绍
Flannel是酷睿操作系统团队为Kubernetes设计的一种板载网络工具,旨在帮助所有使用Kuberentes的酷睿操作系统主机拥有完整的子网
Flannel通过为每个宿主机分配子网为容器提供虚拟网络。 它基于Linux TUN/TAP,使用UDP封装IP数据包以创建复盖网络,并使用etcd维护网络分配。
Flannel原理
Flannel是酷睿操作系统团队针对Kubernetes设计的网络规划服务。 简而言之,这是一种使群集中不同节点主机创建的docker容器具有全集特定虚拟IP地址的功能。
在默认的docker配置中,每个节点的docker服务负责为其节点容器分配IP。 节点内部的容器之间可以相互访问,但主机( Node )网络之间不能相互通信。
Flannel的设计目的是重新规划群集中所有节点的IP地址使用规则,以使不同节点上的容器能够获得“属于同一内部网”和“不重叠”的IP地址,从而使不同节点上的容器能够在内部
Flannel使用etcd保存配置数据和子网分配信息。 当flannel启动时,后台进程首先获取配置和使用中的子网列表,然后选择可用子网并尝试注册。
etcd还存储与每台主机相对应的ip。 flannel使用etcd的watch机制监视/coreos.com/network/subnets下所有元素的更改信息,并相应地维护路由表。
为了提高性能,flannel优化了Universal TAP/TUN设备,并代理了TUN和UDP之间的ip分片。
Flannel电路图
如图所示,Flannel的工作方式可以解释如下。
数据从源容器发送后,通过主机上的docker0虚拟网卡传输到flannel0虚拟网卡。 这是P2P虚拟网卡,flanneld服务器在网卡的另一端被监听。
Flannel通过Etcd服务器维护节点间的路由表,该表保存了各节点主机的子网段信息。
源主机的flanneld服务将原始数据内容进行UDP封装后,按照自己的路由表送达目标节点的flanneld服务,在数据到达后解包,直接到达目标节点的flannel0虚拟网络传输到目标主机上的docker0虚拟网卡,最后通过docker0路由到达目标容器,如本地容器通信。
除了UDP之外,Flannel还支持许多其他Backend :
udp :使用用户状态的udp封装,缺省情况下使用8285端口。 由于用户状态下的打包和打包,性能有很大的损失
VX LAN—需要VX LAN封装、VNI、端口、默认值8472和GBP配置
host-gw :一种直接路由方式,将容器网络的路由信息直接更新到主机路由表中,仅适用于两层可直接到达的网络
AWS-VPC :使用amazonvpcroutetable创建路由并将其应用于在AWS上运行的容器
GCE :使用googlecomputeenginenetwork创建路由。 所有实例都必须打开IP转发,并且应用于在GCE上运行的容器
Ali-VPC :使用AlibabaCloud (阿里巴巴云) VPC route table创建路由,并应用于在AlibabaCloud (阿里巴巴云)上运行的容器
实验性配置
实验环境
大师01:192.168.80.12
Node01:192.168.80.13
节点02:192.168.80.14
由于本实验是在上一篇文章之后引入的,因此实验环境没有变化。 Flannel只需部署到节点上,而不需要部署到主节点上
Flannel的引进
在node01、node02节点上部署文档容器
% 5b root % 40 node 01~% 5d % 23 yum install-yyum-utils device-mapper-persistent-datalvm2% 2f % 2f % E4 % be % 9d % E5 1 % AE % E3 % 82 % a4 % E3 % 83 % B3 % E3 % 82 % B9 % E3 % 83 % 88 % E3 % 83 % BC % E3 % 83 % ab % 0a % E3 % 83 % ad % E3 % 83 % ad % E3 % E3 % 83 % 83 % 83 % B9 % B9 % B9 % B9 % %3afastestmirror % 0a base % 20 % 7c % 203.6 % 20kb % 2000 % 3a 00 % 3a 00 % 0a extras % 20 % 7c % 202.9 % 20kb % 2000 % 3a 00 % 3a 00 - repo https://mirrors.a liyun.com % 2f docker-ce % 2f Linux % 2f centos % 2f docker % 0a % E3 % 83 % ad % E3 % 83 % BC % E3 % 83 E3 % 83 % B3 %3afastestmirror %0aaddingrepofrom % 3a https://mirrors.a liyun.com % 2f docker-ce % 2f Linux % 2f centos % 2f docentos % 2f doce % 2f docker-ce % 2f Linux % 2f centos % 2f docker-ce.repoto % 2f etc % 2f yum.repos.d % 2f docker %0areposavedto % 2f etc % % 23 yum install-y docker-ce % 2f % 2f docker-ce % E3 % 81 % AE % E3 % 82 % a4 % E3 % 83 % B3 % E3 % 82 % B9 % E3 % 83 % 88 E3 % 83 % 97 % E3 % 83 % a9 % E3 % 82 % B0 % E3 % 82 % a4 % E3 % 83 % B3 %3afastestmirror % 0a docker-ce-stable % 20 % 7c le % 2f x86 _ 64 %2fupdateinfo % 7c55b 00 % 3a 00 % 3a 01 % 0a % ef % BC % 882 %2F2 % ef % BC % 89 docker-ce-stable % 2f x86 cached hostfile % 0a . % 0a % 5b root % 40 node 01~% 5d % 23 systemctlstartdocker.service % 2f % 2f docker % E3 % 82 % b5 % E3 % 5b root % 40 node 01~% 5d % 23 systemctlenabledocker.service % 2f % 2f % e9 % 9b % bb % E6 % ba % 90 % E6 % 8a % 95 % E5 % 85 % 85 % A8 % ad % E5 % AE % 9a % E3 % 81 % 99 % E3 % 82 % 8b %0acreatedsymlinkfrom % 2f etc %2fsys temd % 2f system % 2f multi-user stemd % 0a % 5b root % 40 node 01~% 5d % 23 tee % 2f etc % 2f docker %2fdaemon.JSON-% 5c % 5c % 26 amp % 3b quot %3beof % 5c % aa % E3 % 83 % B3 % E3 % 82 % B0 % E3 % 83 % bb % E3 % 82 % a2 % E3 % 82 % af % E3 % 82 % bb % E3 % 83 % a9 % E3 % 83 % AC % EC % 83 % AC % AC % ed gistry-mirrors % 3a % 5b https://% 2a % 2a % 2a % 2a % 2a % 2a % 2a % aliyuncs.com % 5d % 0a % 7d % 20 % 0a eof % 0a % 7b % 20 5d % 0a % 7d % 20 % 0a % 5b root % 40 node 01~% 5d % 23 systemctldaemon-reload % 2f % 2f % E3 % 83 % aa % E3 % 83 % ad % E3 % ad % E3 % ad % E3 % ad % ad % E3 % E3 % ad % E3 % E3 ode 01~~ % 5d % 23 systemctlrestartdocker % 2f % 2f % E5 % 86 % 8d % E8 % b5 % B7 % E5 % 8b % 95 docker % 0a % 5b root % 40 node 00 83 % ab % E3 % 83 % BC % E3 % 83 % 86 % E3 % 82 % a3 % E3 % 83 % B3 % E3 % 82 % B0 % E8 % bb % a2 % e9 % 80 % 81 % E6 % a9 % 96 % a9 % 93 % B3 % B3 % a9 % B3 % 20 for % 20 more % 20 information % ef % BC %8cseesysctl.conf % ef % BC % 885 % ef % BC % 89 and % 20 sysctl.d % 285 % ef % a % 5b root % 40 node 01 % 20~% 5d % 23 % 20 sysctl % 20-p % 20 % 2f % 2f % E3 % 83 % aa % E3 % 83 % ad % E3 % 83 % BC % E3 % network restart % 2f % 2f % E5 % 86 % 8d % E8 % b5 % B7 % E5 % 8b % 95 % E3 % 83 % 83 % E3 % 83 % 88 % E3 % 83 % 83 % E3 % 83 % E3 % 83 % 83 % 83 % E3 % 83 % E3 % 83 % 83 % 83 % 8 % 5b ok % 5d % 0a % 5b root % 40 node 01~% 5d % 23 systemctlrestartdocker % 2f % 2f docker % E3 % 82 % b5 % E3 % 83 % BC % E3 ot % 40 node 01 % 20~% 5d % 23 % 20 docker % 20 version % 0a client %3adockerengine-community % 2f % 2f docker % E3 % 83 % 90 % 3 % 82 % 8b % 0a version % 3a % 2019.03.5 % 0a API % 20 version % 3a % 201.40 % 0a go % 20 version % 3a % 20go1. 12.12 % 0a % B0 % 8e % E5 % 85 % a5 % E3 % 81 % 8c % E5 % AE % 8c % E4 % ba % 86 % E3 % 81 % 97 % E3 % 81 % be % E3 % 81 % 97 % E3 % 81 % E3 % 81 % 81 % E3 % 81 % 81 % 81 % a3 % a3 % 81 % a d % 9c % 0a % 5b root % 40 master 01e TCD-cert % 5d % 23 % 2f opt %2fetcd % 2f bin % 2f % 20 etc dctl-- ca-file % 3d ca.PEM % 3d 3359192.% 20https://192.168.80.14 % 3a 2379 set %2fcor EOS.com % 2f network % 2f config % 5c % 5c % 26 amp % 3b quot % 3b % 3b quot % 3b b % 20 network % 3a % 20172.17.0.0 %2F16 % ef % BC %8CBA ckend % 3a % 20 %7btype % 3a % 20vx LAN % 7d % 7d % 0a % 5b root file % 3d ca.PEM-- cert-file % 3d server.PEM-key-file % 3d server-key.PEM-end points % 3359192.% 0a % 7b % % 3a % 20vx LAN % 7d % 7d % 0a % 5b root % 40 master 01e TCD-cert % 5d % 23cd . % 2f % 2fk8s % E3 % 83 % 87 % E3 % 82 % a3 % E3 % E3 % E3 % a3 % E3 % E3 % E3 % E3 % E3 % E3 5b root % 40 master 01 k8s % 5d % 23ls % 2f % 2f flannel % E3 % 83 % 91 % E3 % 83 % E3 % 82 % B1 % E3 % 83 % BC % E3 % 82 % b8 3 % 81 % 86 % E3 % 81 % 8b % E3 % 82 % 92 % E8 % aa % BF % E3 % 81 % B9 % E3 % 82 % 8b %0ACF SSL.she TCD-v 3.3.10-linue UX-amd64.tar.gz %0aet CD.sh flannel-v 0.10.0-Linux-amd64.tar.gz % 0a % 5b root % 40 master 01 k8s % 5d % 23 scp
% 5b root % 40 master 01 k8s % 5d % 23 scp flannel-v 0.10.0-Linux-amd64.tar.gz flannel.sh root % 40192.168.80.14 b quot % 3bs password % 3a % 0a flannel-v 0.10.0-Linux-amd64.tar.gz 100 % 9479 kb 119.3 MB % 2fs 00 % 3a 00 % 0a flannel . 3 % 8e % E3 % 83 % BC % E3 % 83 % 89 % E3 % 81 % AE % E5 % 90 % 8c % E6 % 9c % 9c % 9f % E6 % 93 % 8d % E4 % BD % 9c % 0a % 5b root 2 % b8 % E3 % 81 % 8c % E6 % ad % a3 % E5 % b8 % b8 % E3 % 81 % ab % E3 % 82 % B3 % E3 % 83 % 94 % E3 % 83 % BC % E3 % 81 % 95 % 82 % 8b % 0a anaconda-ks.cf gflannel-v 0.10.0-Linux-amd64.tar.gz % 0a % 5b root % 40 node 01~% 5d % 23 tarzxvfffff 3 % 83 % 91 % E3 % 83 % 83 % E3 % 82 % B1 % E3 % 83 % BC % E3 % 82 % b8 %0aflanneld % 0a MK-docker-opts.sh % 0a自述c % 8cb in % ef % BC %8cssl % 7d % 20-p % 20 % 2f % 2f % E5 % 86 % 8d % E5 % b8 % B0 % E7 % 9a % 84 % E3 % 81 % abk8s % E4 % 83 % aa % E3 % 82 % 92 % E4 % BD % 9c % E6 % 88 % 90 % E3 % 81 % 99 % E3 % 82 % 0a % 5b root % 40 node 01~~ % 5d % 23 mvmk 82 % af % E3 % 83 % aa % E3 % 83 % 97 % E3 % 83 % 88 % E3 % 83 % 95 % E3 % 82 % a1 % E3 % 82 % a4 % E3 % 83 % ab % E3 % 82 % 92 % ab % E3 % 82 % 82 % E3 % 82 % 82 % 95 % 88 % 88 3 % 82 % af % E3 % 83 % 88 % E3 % 83 % aa % E3 % 81 % AE % E4 % b8 % 8b % E3 % 81 % aebin % E3 % 83 % 87 % E3 % 82 % a3 % E3 % a3 % E3 % E3 % 83 % a3 % 83 % b8 % 8b % 0a % 5b root % 40 node 01~% 5d % 23 vim flannel.sh % 2f % 2f flannel % E5 % AE % 9f % E8 % a1 % 8c % E3 % 82 % B9 % E3 % % 97 % E3 % 81 % a6 % E3 % 83 % 97 % E3 % 83 % ad % E3 % 83 % 95 % E3 % 82 % 82 % a4 % E3 % 83 % ab % E3 % 82 % 92 % ndpoints % 3d % 24 %7B1 % 3a-http://127.0.0.1 % 3a 2379 % 7d %0ACAT eof % 2f opt %2fkubernetes % 2f CFG %2fflanneld % 0a % 7d % 5c % 5c % 5c % 5c % 26 amp % 3b quot % 3b % 0a-etcd-ca file % 3d % 2f opt %2fetcd % 2f SSL % 2f ca.PEM % 5c % 5c % 5c etcd-keyfile % 3d % 2f opt %2fetcd % 2f SSL % 2f server-key.PEM % 0a eof %0ACAT eof % 2f usr % 2f lib %2fsys temd % 2f system ldoverlayaddressetcdagent % 0a after % 3d network-online.target network.target % 0a before % 3d docker.service % 0a % 5b % dnotify %0aenvironmentfile % 3d % 2f opt %2fkubernetes % 2f CFG %2fflanneld %0aexecstart % 3d % 2f opt %2fkubernetes % 2f bin annel _ options %0aexecstartpost % 3d % 2f opt %2fkubernetes % 2f bin % 2f MK-docker-opts.sh-k docker _ network _ optts % 0a % 5b install % 5d %0awantedby % 3d multi-user.target % 0a eof %0asystemctl % 20 daemon-reload %0asystemctl % 20 enabled awq % 0a % 5b root % 40 node 01~% 5d % 23 bash flannel.sh https://192.168.80.12 % 3a 2379 % E3 % 80 % 81https://192.168.80 TC %2fsys temd % 2f system % 2f multi-user.target.wants %2fflanneld.service to % 2f usr % 2f lib %2fsys temd %2fsys temd %2fsys d % 2f system % 2f docker.service % 2f % 2f docker % E8 % b5 % B7 % E5 % 8b % 95 % E3 % 82 % B9 % E3 % 82 % af % E3 % 83 % aa % aa nel % E3 % 81 % ab % E6 % 8e % a5 % E7 % B6 % 9a % E3 % 81 % 99 % E3 % 82 % 8b % 0a . % 0a % 5b % E3 % 82 % b5 % E3 % 83 % BC groupsbecausethedelegateissuesstill % 0a % 23 existsandsystemdcurrentlydoesnotsupportthecgroupfeaturesetrequired % 0a % 23 % 20 r %0aenvironmentfile % 3d % 2f run % 2f flannel % 2f subnet.env % 2f % E6 % 8e % a5 % E7 % B6 % 9a % E5 % AE % 9f % E8 % 2f bin %2fdock erd % 24 docker _ network _ options-HFD % 3a % 2f % 2f-- containerd % 3d % 2f run %2fcontainerd %2fcontaintion outsec % 3d0% 0a . % 0a % 3a wq % 0a % 5b root % 40 node 01~~ % 5d % 23 cat % 2f run % 2f flannel % 2f subnet.env % 2f % 2f docket % B6 %9aflannel % E3 % 83 % 95 % E3 % 82 % a1 % E3 % 82 % a4 % E3 % 83 % ab % E3 % 82 % 92 % E8 % a6 % 8b % E3 % 82 % 8b % 0a q % 3d false % 0a docker _ opt _ MTU % 3d-- MTU % 3d 1450 % 0a docker _ network _ options % 3d-- bip % 3d 172.17.49.1 7 % E5 % 8b % 95 % E6 % 99 % 82 % E3 % 81 % AE % E3 % 82 % b5 % E3 % 83 % 8d % E3 % 83 % 83 % 83 % 88 % E3 % 88 % E3 % 81 % 93 % E3 % 81 % a7 % E3 % 81 % af node 01 % E3 % 81 % A8 % 0a % E3 % 83 % 83 % E3 % 83 % 88 % E3 % 82 % 92 % E3 % 83 % aa % E3 % 83 % ad % E3 % 83 % BC % E3 % 83 % E3 % 83 % 97 % E3 % 83 % ad % 82 % bb % E3 % 82 % B9 % 0a % 59 % 8 % b5 % B7 % E5 % 8b % 95 % E3 % 81 % 99 % E3 % 82 % 8b % 0a % 5b root % 40 node 01 % 20~% 5d % 23 % 20 ifconfig % 20 % 2f % 2f % 2f % 2f
ens33: flags=4163UP,BROADCAST,RUNNING,MULTICAST mtu 1500
inet 192.168.80.14 net mask 255.255.255.0 broadcast 192.168.80.255
.
flannel.1: flags=4163UP,BROADCAST,RUNNING,MULTICAST mtu 1450
inet 172.17.63.0net mask 255.255.255.255 broadcast0.0.0//flannel网卡信息
.
lo: flags=73UP,LOOPBACK,RUNNING mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
.
[ root @ node 02~] #使用ping 172.17.49.1//ping命令测试网络是否互操作
萍172.17.49.1 ( 172.17.49.1 ) 56 ) 84 ) bytes of data。
64 bytes from 172.17.49.1:icmp _ seq=1TTL=64 time=0.344 ms
64 bytes from 172.17.49.1:icmp _ seq=2TTL=64 time=0.333 ms
64 bytes from 172.17.49.1:icmp _ seq=3TTL=64 time=0.346 ms
^C
----172.17.49.1 ping statistics-- -
3 packets transmitted,3 received,0% packet loss,time 2000ms
RTT min/avg/max/mdev=0.333/0.341/0.346/0.005 ms
使用node01、node02节点服务器
root @ node 01~~ # docker run-it centos:7/bin/bash//docker执行镜像
unabletofindimage\\\&; #039; centos:7\\\&; quot; 本地
7: Pulling from library/centos
ab5ef0e58194: Pull complete
digest:sha 256:4a 701376 d 03 F6 b 39b8C2 A8 F4 A8 e 499441 b0d 567 F9 ab 58 e 4991 de 4472 FB 813 c
status:downloadednewerimageforcentos:7
[ root @ e 8ee 45 a4fd 28/] # yuminstallnet-tools-y//在容器中安装网络工具
Loaded plugins: fastestmirror,ovl
determining快速镜像
* base: mirrors.163.com
* extras: mirrors.163.com
.
使用node01服务器
[ root @ e 8ee 45 a4fd 28/] # ifconfig//查看网卡信息
eth0: flags=4163UP,BROADCAST,RUNNING,MULTICAST mtu 1450
inet 172.17.49.2 net mask 255.255.255.0 broadcast 172.17.49.255
.
lo: flags=73UP,LOOPBACK,RUNNING mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
.
使用node02服务器
[ root @ 47 a a8b 55 a61 a/] # ifconfig//查看网卡信息
eth0: flags=4163UP,BROADCAST,RUNNING,MULTICAST mtu 1450
inet 172.17.63.2 net mask 255.255.255.0 broadcast 172.17.63.255
.
lo: flags=73UP,LOOPBACK,RUNNING mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
.
[ root @ 47 a A8 b 55 a61 a/] # ping 172.17.49.2//node 02服务器中的docker容器将测试是否可以使用ping命令与node01服务器中的docker进行通信
萍172.17.49.2 ( 172.17.49.2 ) 56 ) 84 ) bytes of data。
64 bytes from 172.17.49.2:icmp _ seq=1TTL=62 time=0.406 ms
64 bytes from 172.17.49.2:icmp _ seq=2TTL=62 time=0.377 ms
64 bytes from 172.17.49.2:icmp _ seq=3TTL=62 time=0.389 ms
64 bytes from 172.17.49.2:icmp _ seq=4TTL=62 time=0.356 ms
^C
----172.17.49.2 ping statistics-- -
4 packets transmitted,4 received,0% packet loss,time 3001ms
RTT min/avg/max/mdev=0.356/0.382/0.406/0.018 ms//通信成功
Flannel组件的导入完成
详情请访问云服务器、域名注册、虚拟主机的问题,请访问西部数码代理商官方网站: www.chenqinet.cn