mac怎么合并两个容器_AKS 集群虚拟网卡和AKS Pod 容器对应关系

Azure CNI(高级)网络

借助 Azure CNI,每个 pod 都可以从子网获取 IP 地址,并且可以直接访问。 

与 kubenet 不同,同一虚拟网络中的终结点的流量不会通过 NAT 发送到节点的主 IP。 虚拟网络内的流量的源地址是 pod IP。 虚拟网络外部的流量仍可通过 Nat 发送到节点的主 IP。

节点使用 Azure 容器网络接口 (CNI) Kubernetes 插件。

dc4c8064730f9412f41801994580115c.png

在AKS集群中部署Pod容器后在宿主机查询网卡信息如下:

4c95b6d60e15d3aefc82ebd4c71fa8bd.png

了解容器网络的同学都知道容器之间是通过VEth设备来进行容器间的网络通信的, 即通过将VEth设备的一端接在宿主机上, 另一端接在容器里面来实现宿主机network namespace和容器network namespace的连接, 在这里VEth设备充当了连接两个network namespace的一根虚拟网线的作用.

但是宿主机上的虚拟机接口和部署在宿主机的Pod 是如何对应的?

下面就来分享两种方法。

89fc1456be9a1596b8f728514b5a68ec.png

先来看下Pod所在的宿主机上ip a输出的情况

a3ceaa45e094f222d602f1e5df866c3f.png

可以看到在宿主机上有多个VEth接口azvxxxxxx, 可以通过ip -d link show验证确实是VEth接口

f3568be724c06fba83db1e23d072f862.png

通过 brctl show可以看到VEth接口都接在网桥azure0上。

76835e60adbba73c9ebb77f0ed01f730.png

通过ip a输出的网络接口序号对应关系找到VEth设备的对端接口。

在Pod(容器)当中执行ip a查看容器当中的网络接口情况。

kubectl exec -it aks-ssh-test-8677754ff6-ltfgw  /bin/sh

56e600c0144efb1f1f1ea43533fabe3d.png

可以看到aks-ssh-test-8677754ff6-ltfgw这个Pod里面看到的接口为eth0@if8, 对应宿主机上的序号为8的接口即azvae17cd4ba0b

fdfe6193cef9d65ebd45a5e0ed4bac6f.png

下面来进行抓包验证, 通过在aks-ssh-test-8677754ff6-ltfgw这个Pod往外发ping包, 然后在宿主机上抓包看宿主机上的哪个VEth网络接口上能抓到ICMP报文。

sh-4.2# ping www.baidu.com

PING www.a.shifen.com (220.181.38.150) 56(84) bytes of data.

--- www.a.shifen.com ping statistics ---

24 packets transmitted, 0 received, 100% packet loss, time 23530ms

e665854468be93479825e4b2c703e5f8.png

可以看到在宿主机上的azvae17cd4ba0b 8号网络接口上有抓到ICMP报文, 验证通过。

同时可以在bridge azure0上抓到ICMP报文。

52f1440c2743367c358e19f3af740cd8.png

Pod发往AKS集群外部的流量会通过SNAT 转换节点的主 IP。

c85397d35132fa9dac0fe90f728bdf0e.png

通过Linux Bridge上的转发表来找到VEth设备的对端接口

另外一种方法则是通过Linux Bridge这个设备上的MAC地址对应关系来查找VEth设备的对端接口, 所有的VEth设备的一端实际上都连接在Linux Bridge上, 而Linux Bridge作为一个网络包转发的中间人, 当然是得知道两端的情况才行。

  • 查看Linux Bridge上的MAC和虚拟交换机端口对应关系

a48cc188307e51631fa0d375fe729b1d.png

可以看到Linux Bridge上有多个接口, local标志为no的表示的就是VEth设备的对端, 端口号一致的表示同一个VEth设备, 通过对比宿主机上ip a和容器当中ip a输出的结果对MAC地址进行比, 同样可以通过抓包的方式来验证。5fe3bc99dd489a9951a4f2e84c834b69.png

70c17422c89fa207c74df1218ccc049b.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值