14. 使用vxlan设备封包@flannel
introduction
# vxlan 模式下的 flannel 会先创建一个 flannel.1 网络设备
# 这个设备就是这台宿主机的 vtep , 其中1代表vni
# 而vtep使用的local-ip就是本宿主机的IP, 因为vtep使用eth0发出
$ ip -d link show flannel.1
5. flannel.1 <BROADCAST> mtu 1450
VXLAN id 1 172.17.130.244 nolearning
# 宿主机上的路由表, 172.17.1/2 是区别的宿主机的包, 通过vtep发出
$ route -n
172.17.0.0 255.255.255.0 cni0
172.17.1.0 255.255.255.0 flannel.1
172.17.2.0 255.255.255.0 flannel.1
# vtep 在proxy模式下会代答arp请求, 这里是我们已经收集到的别的容器的mac
$ arp -n
172.17.1.3 dev flannel.1 lladdr 42:7f:69:c7:cd:37
172.17.2.4 dev flannel.1 lladdr 7a:2c:d0:7f:48:3f
# fdb表用于在已知容器mac的情况下查宿主机的ip, 如果我们已经有两个容器mac了
# 那么相对应的, 我们也应该有两条 fdb 表记录, 用于查这两个mac的宿主机IP
$ bridge fdb show dev flannel.1
42:7f:69:c7:cd:37 dst 192.168.139.164 self permanent
7a:2c:d0:7f:48:3f dst 192.168.130.140 self permanent
# 看下端口, vxlan模式下的flanneld在内核态中, 监听8472端口
$ netstat -ulnp | grep 8472
udp 0 0.0.0.0:8472 -vxlan里面那些问题是怎么被搞定的
Last updated
Was this helpful?