1. 探针性质介绍
- 探针类似于开源的网络嗅探器(类似项目github很多)
- 探针为了防止丢包,需要安装许多内核模块才能使用,比如网络相关的模块pf_ring等
- 探针需要运行在K8S集群的每一个节点,采集网卡相关数据
2. DaemonSet简单介绍
一个DaemonSet对象能确保其创建的Pod在集群中的每一台(或指定)Node上都运行一个副本。如果集群中动态加入了新的Node,DaemonSet中的Pod也会被添加在新加入Node上运行。删除一个DaemonSet也会级联删除所有其创建的Pod。
3. 为什么选择DaemonSet
- DaemonSet解决了当K8S集群新增节点时,自动提供该节点监控的能力
- 方便实施部署,利用K8S提供的能力管理探针
- 方便对探针实施资源限制,避免探针占用太多节点资源导致节点运行业务应用受限
- DaemonSet支持污点和容忍,可以快速剔除不需要监控的节点
4. 关键问题?
加载模块(驱动)整文件与宿主机不同
因为容器和宿主机的kernel source的文件不同,如果我们直接进行内核包安装,可能会导致内核模块安装失败或者不可用。所以我们需要将/var/modules目录进行挂载。这部分涉及到软连接,是安装内核包的前置部分。
通过容器安装内核模块
该探针与其他上云应用不同的是强依赖内核,也