kubernetes:flannel vxlan的通信过程

1.网络使用的是flannel

flannel使用的镜像为quay.io/coreos/flannel:v0.12.0-amd64
下载地址:https://github.com/coreos/flannel/releases

2.flannel vxlan的通信过程

在这里插入图片描述

nodes容器(pod)cni0flannel.1
172.25.60.3(server3)10.244.1.3610.244.1.1/2410.244.1.0/32
172.25.60.4(server4)10.244.2.3510.244.2.1/2410.244.2.0/32

(1)在node上创建的容器通过网关将数据传送的cni0
10.244.1.36---->10.244.1.1
容器在物理机上的veth59aab0aa网卡上,因为使用cji接口标准,所以veth59aab0aa网卡会桥接在cni0网桥上。

[root@server3 ~]# brctl show
bridge name	bridge id		STP enabled	interfaces
cni0		8000.1a5f8fc31ca1	no		veth59aab0aa

(2)数据包走到cni0网桥后,通过查看路由表

[root@server3 ~]# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.25.60.250   0.0.0.0         UG    0      0        0 eth0
10.244.0.0      10.244.0.0      255.255.255.0   UG    0      0        0 flannel.1
10.244.1.0      0.0.0.0         255.255.255.0   U     0      0        0 cni0
10.244.2.0      10.244.2.0      255.255.255.0   UG    0      0        0 flannel.1

根据路由和掩码,选择对应的flannel.1(.1表示cni0的值),下一跳就是10.244.2.0

(3)进入到flannel.1,封装数据包(vtep进行封装和解封的工作),通过arp来获取对应的mac地址

[root@server3 ~]# arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
10.244.2.0               ether   ba:30:dd:e7:1a:d0   CM                    flannel.1

查看目标flannel.1的mac地址:mac地址相同

[root@server4 ~]# ip addr show
6: flannel.1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue state UNKNOWN group default 
    link/ether ba:30:dd:e7:1a:d0 brd ff:ff:ff:ff:ff:ff
    inet 10.244.2.0/32 scope global flannel.1
       valid_lft forever preferred_lft forever
    inet6 fe80::b830:ddff:fee7:1ad0/64 scope link 
       valid_lft forever preferred_lft forever

(4)在宿主机之间通过udp传输,进而将server3上的flannel.1上的数据帧发送出去,但是如何知道10.244.2.0 在server4上呢?
通过查看桥接转发的数据库

[root@server3 ~]# bridge fdb show
ba:30:dd:e7:1a:d0 dev flannel.1 dst 172.25.60.4 self permanent
a2:a5:59:51:c7:81 dev flannel.1 dst 172.25.60.4 self permanent
0a:a6:f9:a3:06:4a dev flannel.1 dst 172.25.60.2 self permanent
06:59:bf:4a:4d:f4 dev flannel.1 dst 172.25.60.2 self permanent

所以可以知道ba:30:dd:e7:1a:d0(mac地址)在172.25.60.4宿主机上

(5)查找172.25.60.4对应的mac地址

[root@server3 ~]# arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
172.25.60.4              ether   52:54:00:4d:cd:c9   C                     eth0

查看server4上的eth0的mac地址:与上面相同

[root@server4 ~]# ip addr show
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:00:4d:cd:c9 brd ff:ff:ff:ff:ff:ff
    inet 172.25.60.4/24 brd 172.25.60.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe4d:cdc9/64 scope link 
       valid_lft forever preferred_lft forever
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值