Cilium架构简介&eBPF数据流向查看

03aaf42c66099c5f9a5f5c447c1bdf99.gif

1

环境准备

上一篇文章将 k8s 的网络插件改为 cilium 同时部署了观测平台 hubble,部署方式可参考上篇。

基于eBPF的k8s网络插件Cilium部署与流量治理浅尝

本篇讲一下 cilium 的架构和数据流向的查看方式。首先,你需要一个kubernetes集群,并使用了 cilium 网络插件。

8716686366d1da5773a2643f528a3da1.jpeg

部署后可以看到,每个节点上都启动了一个cilium pod,还有一个cilium-operator,进到 cilium pod里,你可以使用 cilium cli工具。

2

cilium架构

Cilium的架构图如下所示。

afbfbc47d2c0cb3549d77181c5f7364f.jpeg

Cilium Agent:以 DaemonSet 的方式运行在所有的节点上,负责 eBPF 程序的编辑和挂载,eBPF程序所需要的全局 Maps 的初始化和维护以及 Pod 相关 Maps 的创建和维护,同时负责 iptables 的初始化和维护。

Cilium Operator:负责 IPAM 的相关工作,主要是给主机节点分配 CIDR,给 Pod 分配 ip 地址由主机上的 Cilium Agent 来完成。

Cilium Cli:用来和本地的 Cilium Agent 通信,提供操作 Cilium 的能力。

3

数据流向查看

下面我们使用 cilium cli 工具查看一下数据是如何从 192.168.249.10 发送到192.168.249.12 上的 pod 10.0.0.23 里面的。

3a91cc8bcf28706c7434b2b956cff1ac.jpeg

我们使用cilium map命令,查看192.168.249.10 上的 cilium_ipcache,可以看到在 ebpf 的 map 中记录了,数据发送到 10.0.0.23/32,可以通过endpoint 是 192.168.249.12 的隧道发送。

d062c462d17ef481589397108f65ed43.jpeg

然后查看 192.168.249.12 上的 cilium_ipcache,可以看到,发送给 10.0.0.23/32 时经过的隧道 endpoint 是 0.0.0.0,说明这个 pod 在本节点上面。

3fe8cf026de1e61c158fd7d0db2ff3cb.jpeg

继续查看 192.168.249.12 上的  cilium_lxc,可以看到 10.0.0.23 的 mac 地址是 5A:xx,对应 node 上 lxc 的 mac 地址是 46:xx。

f47d2d6ef387632839515a511271e071.jpeg

我们查看192.168.249.12上面的网络设备,可以看到 mac 地址为 46:xx 的 lxc 设备,该设备对端是 if9,也就是 pod 中的网卡设备,mac 地址应该是上面图中显示的 5A:xx。

9531046d92e13f7774c8bf219174c6ce.jpeg

这样,数据包就通过 eBPF 程序,从192.168.249.10 设备上发送到192.168.249.12 上的 pod 10.0.0.23 内部了。

e513e1f20bba88ea342edf2284b90719.jpeg

点个赞

a1403f471f95268e3b146a623459ee92.gif

再走吧

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值