Kubernetes中的事件最终还是存储在etcd中,默认情况下只保存1个小时,由于etcd并不支持一些复杂的分析操作,默认Kubernetes只提供了非常简单的过滤方式,比如通过Reason、时间、类型等。同时这些事件只是被动的存在etcd中,并不支持主动推送到其他系统,通常只能手动的去查看。
而实际上我们对事件的使用需求非常高,例如:
- 对系统中的异常事件做实时告警,例如Failed、Evicted、FailedMount、FailedScheduling等。
- 通常问题排查可能要去查找历史数据,因此需要去查询更长时间范围的事件(几天甚至几个月)。
- 事件支持归类统计,例如能够计算事件发生的趋势以及与上一时间段(昨天/上周/发布前)对比,以便基于统计指标进行判断和决策。
- 支持不同的人员按照各种维度去做过滤、筛选。
- 支持自定义的订阅这些事件去做自定义的监控,以便和公司内部的部署运维平台集成。
进行Kubernetes Event持久化:
1、使用开源项目eventrouter进行收集
项目地址: https://github.com/heptiolabs/eventrouter
参考:https://blog.csdn.net/weixin_43855694/article/details/103264930
2、kspan配合 Jaeger 利用 tracing 的方式来采集
参考:https://blog.csdn.net/tao12345666333/article/details/118214871
3、使用开源项目KubeWatch进行收集
参考:https://segmentfault.com/a/1190000041204565
4、使用开源项目kubernetes-event-exporter进行收集(推荐)
项目地址:https://github.com/opsgenie/kubernetes-event-exporter
参考:https://qiankunli.github.io/2020/04/27/kubernetes_event.html
注意:本文归作者所有,未经作者允许,不得转载