flannel网络的VXLAN及host-gw

VXLAN是Linux内核本身支持的一种网络虚拟化技术,是内核的一个模块,在内核态实现封装解封装,构建出覆盖网络,其实就是一个由各宿主机上的Flannel.1设备组成的虚拟二层网络。

由于VXLAN由于额外的封包解包,导致其性能较差,所以Flannel就有了host-gw模式,即把宿主机当作网关,除了本地路由之外没有额外开销,性能和calico差不多,由于没有叠加来实现报文转发,这样会导致路由表庞大。因为一个节点对应一个网络,也就对应一条路由条目。

 

配置Host-gw:(在etcd集群中任意节点)

[root@node203 etcd]# ./etcdctl set /coreos.com/network/config '{"Network": "172.7.0.0/16", "Backend": {"Type": "host-gw"}}'

host-gw虽然VXLAN网络性能要强很多。,但是种方式有个缺陷:要求各宿主机node节点必须在同一个二层网络中。

物理节点必须在同一网段中。这样会使得一个网段中的主机量会非常多,万一发一个广播报文就会产生干扰。
在私有云场景下,宿主机不在同一网段是很常见的状态,所以就不能使用host-gw了。

 #https://www.cnblogs.com/liucx

Flnnel的VXLAN模式有两种:

VXLAN: 原生的VXLAN,即扩展的虚拟LAN
Directrouting:直接路由型

使用Vxlan模式flanneld创建了一个flannel.1接口,它是专门用来封装隧道协议的

flannel网络的VXLAN及host-gw_第1张图片

 (1)配置Vxlan模式:

[root@node203 etcd]#./etcdctl set /coreos.com/network/config  '{"Network": "172.7.0.0/16", "Backend": {"Type": "VxLAN"}}'

修改后记得重启flanneld

route -n  是没有路由的,有一个flannel.1网卡,通过flannel.1建立虚拟隧道通信
flannel网络的VXLAN及host-gw_第2张图片

 (2)配置Directrouting直接路由模式:((智能判定)推荐)

[root@node203 etcd]#../etcdctl set /coreos.com/network/config  '{"Network": "172.7.0.0/16", "Backend": {"Type": "VxLAN","Directrouting": true}}'

修改后记得重启flanneld

flannel网络的VXLAN及host-gw_第3张图片

VXLAN支持host-gw,如果两个节点在同一网段时使用host-gw通信,如果不在同一网段中,即 当前pod所在节点与目标pod所在节点中间有路由器,就使用VXLAN这种方式,使用叠加网络。
结合了Host-gw和VXLAN,这就是VXLAN的Directrouting模式

你可能感兴趣的:(flannel网络的VXLAN及host-gw)