K8S之Flannel的vxlan网络模式初步源码解析

本文深入探讨K8S中Flannel的vxlan网络模式,通过源码分析flannel如何配置vxlan网卡、路由和fdb,实现跨主机容器通信。详细阐述了请求路径,包括路由配置、fdb和arp的作用,揭示了flannel在网络通信中的关键角色。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

之前详细解析过Flannel的vxlan模式的网络通信原理,本篇将继续深入结合源码进行探索

前情提要

阅读本文需要知道flannel vxlan网络模式的网络请求路径,可以参考以前博主写的文章:K8S探索之Service+Flannel本机及跨主机网络访问原理详解

本篇的示例场景还是之前文章中的图,如下:

在主节点121.4.190.84,直接是可以ping通容器ip:10.244.1.8

➜  ~ ping 10.244.1.8
PING 10.244.1.8 (10.244.1.8) 56(84) bytes of data.
64 bytes from 10.244.1.8: icmp_seq=1 ttl=63 time=29.3 ms
64 bytes from 10.244.1.8: icmp_seq=2 ttl=63 time=29.3 ms
64 bytes from 10.244.1.8: icmp_seq=3 ttl=63 time=29.3 ms

本篇就以121.4.190.84 --> 10.244.1.8的网络请求路径开始探索下flannel的相关源码

源码探索

初始启动配置vxlan网卡

在主节点121.4.190.84,ping10.244.1.8时,由于后者不是公网ip,所以是不能直接ping的,在vxlan网络模式下,是将请求交给了vxlan网卡进行封包,封了一层后,包的请求目的地址换成了目标公网ip和vxlan的监听端口

在初次启动时,肯定得是vxlan网卡的添加了,手动配置的命令类似如下:

ip link add vxlan0 type vxlan \
   id 42 \
   dstport 4789 \
   dev enp0s8 \
   ......

flannel初次启动的时候肯定是要配置自己的vxlan,在机器上我们可以看到:

➜  ~ ifconfig
flannel.1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 10.244.0.0  netmask 255.255.255.255  broadcast 10.244.0.0
        inet6 fe80::f4f2:b0ff:fefa:7573  prefixlen 64  scopeid 0x20<link>
        ether f6:f2:b0:fa:75:73  txqueuelen 0  (Ethernet)
        RX packets 205910  bytes 22397966 (21.3 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 296287  bytes 41537899 (39.6 MiB)
        TX errors 0  dropped 8 overruns 0  carrier 0  collisions 0

➜  ~ ip -d link show dev flannel.1
39: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值