首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

1

环境准备

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

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

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

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

2

cilium架构

Cilium的架构图如下所示。

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 里面的。

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

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

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

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

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

点个赞

再走吧

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230426A034VW00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券