vxlan 后端介绍
vxlan 新特性支持DirectRouting(v0.9.0)
Use in-kernel VXLAN to encapsulate the packets.
Type and options:
Type (string): vxlan
VNI (number): VXLAN Identifier (VNI) to be used. Defaults to 1.
Port (number): UDP port to use for sending encapsulated packets. Defaults to kernel default, currently 8472.
GBP (Boolean): Enable VXLAN Group Based Policy. Defaults to false.
DirectRouting (Boolean): Enable direct routes (like host-gw) when the hosts are on the same subnet. VXLAN will only be used to encapsulate packets to hosts on different subnets. Defaults to false.
默认情况下,使用内核的vxlan 来发送数据包
在性能要求比较苛刻的情况下,可以打开DirectRouting
DirectRouting 的原理类似host-gw 模式,是在同一子网,直接通过路由转发数据包。
如 使用route 命令后:
172.20.52.0 10.10.4.1 255.255.254.0 UG 0 0 0 eth0
172.20.96.0 10.10.4.2 255.255.254.0 UG 0 0 0 eth0
可以看到,同一子网内的机器,都添加了路由规则来打通网络
这样的好处,就是性能比较高,而坏处则是,无法获取到源pod 的ip了。
查看 vxlan 节点情况:
bridge fdb show dev flannel.1
vxlan 网络不通的几种情况
no route to host
原因,这个原因一般都是iptables 限制,那么,需要检查iptables配置
比如,限制了pod ip。 或者 限制了ping包
如,以下2条规则,会导致无法访问
-A INPUT -j REJECT --reject-with icmp-host-prohibited
-A FORWARD -j REJECT --reject-with icmp-host-prohibited