1. flannel 网络流量分析

1.1. 选择目标容器

# kubectl get pod
NAME                       READY     STATUS    RESTARTS   AGE
busybox-7868487dfd-7rndh   1/1       Running   0          41m
busybox-7868487dfd-gjkq6   1/1       Running   0          41m
busybox-7868487dfd-h5x52   1/1       Running   0          41m

这里以 busybox-7868487dfd-7rndh 进行分析,登录到调度的 node 节点

2. 查看对应的

[root@wenyu-rancher-server ~]# docker ps |grep my-dep-759ddc4c75-g6485
0d3c8f05ffa3        centos                                                                    "/bin/sh -c 'sleep 3…"   10 minutes ago      Up 10 minutes                                                  k8s_centos_my-dep-759ddc4c75-g6485_default_a57ae383-82e5-4f5e-9ce4-d9f366afdf24_0
7a59bdb90c93        registry.cn-hangzhou.aliyuncs.com/google_containers/pause:3.1             "/pause"                 10 minutes ago      Up 10 minutes                                                  k8s_POD_my-dep-759ddc4c75-g6485_default_a57ae383-82e5-4f5e-9ce4-d9f366afdf24_0

找到 POD 对应的容器 ID 0d3c8f05ffa3 登录

[root@wenyu-rancher-server ~]# docker exec -it 0d3c8f05ffa3 bash
[root@my-dep-759ddc4c75-g6485 /]# cat  /sys/class/net/eth0/iflink
28

或者

root@my-dep-759ddc4c75-g6485:/# ethtool -S eth0
NIC statistics:
     peer_ifindex: 28

查看 net link 为 28

2.1. 查找虚拟网卡

/sys/class/net/ 和 /sys/class/net/ 是一样的连接文件

[root@wenyu-rancher-server ~]# ll /sys/class/net/
总用量 0
lrwxrwxrwx 1 root root 0 4月  22 20:54 cni0 -> ../../devices/virtual/net/cni0
lrwxrwxrwx 1 root root 0 4月  22 20:54 docker0 -> ../../devices/virtual/net/docker0
lrwxrwxrwx 1 root root 0 4月  22 20:54 eth0 -> ../../devices/pci0000:00/0000:00:03.0/virtio0/net/eth0
lrwxrwxrwx 1 root root 0 4月  22 20:54 flannel.1 -> ../../devices/virtual/net/flannel.1
lrwxrwxrwx 1 root root 0 4月  22 20:54 lo -> ../../devices/virtual/net/lo
lrwxrwxrwx 1 root root 0 4月  22 20:54 veth05a33997 -> ../../devices/virtual/net/veth05a33997
lrwxrwxrwx 1 root root 0 4月  22 21:34 veth5c8a14d5 -> ../../devices/virtual/net/veth5c8a14d5
lrwxrwxrwx 1 root root 0 4月  22 21:34 veth6925d34b -> ../../devices/virtual/net/veth6925d34b
lrwxrwxrwx 1 root root 0 4月  22 20:54 veth9ef9e7a -> ../../devices/virtual/net/veth9ef9e7a
lrwxrwxrwx 1 root root 0 4月  22 21:34 vethafab477d -> ../../devices/virtual/net/vethafab477d

变量所有虚拟网卡,查找 ifindex 为 28 的文件

2.2. 查找宿主机对应的网卡

方法1

ip addr show


28: veth6925d34b@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master cni0 state UP group default
    link/ether b6:24:0c:11:43:d1 brd ff:ff:ff:ff:ff:ff link-netnsid 4
    inet6 fe80::b424:cff:fe11:43d1/64 scope link
       valid_lft forever preferred_lft forever

在直接通过 ip a show 查找 ID 为 28 的网卡

方法2

过滤所有网卡网卡,查找有 28 的文件

[root@wenyu-rancher-server ~]# find /sys/devices/virtual/net -type f -name "ifindex" |xargs grep "28"
/sys/devices/virtual/net/veth6925d34b/ifindex:28

这里可以看到路径中 veth6925d34b 为绑定在网桥上的虚拟网卡的的名称

[root@wenyu-rancher-server ~]# ip a |grep veth6925d34b
28: veth6925d34b@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1450 qdisc noqueue master cni0 state UP group default

在宿主机上可以看到该 虚拟 vethXXX 最下面的 ID 同样为 28

2.3. 确认vethXX绑定的虚拟网桥

[root@wenyu-rancher-server ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
cni0            8000.6e4cd2014939       no              veth05a33997
                                                        veth5c8a14d5
                                                        veth6925d34b
                                                        vethafab477d
docker0         8000.0242dee8482b       no              veth9ef9e7a

brctl show 可以看到该机器上有2个网桥,而要查找的 vethXX 链接到 cni0

提示:

brctl 命令需要安装 yum install -y bridge-utils

Copyright © 温玉 2021 | 浙ICP备2020032454号 all right reserved,powered by Gitbook该文件修订时间: 2023-05-22 14:19:45

results matching ""

    No results matching ""