目录

k8s-eventer和bark联动

概述

本文主要介绍一下 kube-eventer 和 bark 的在 Kubernetes 事件告警的场景中的联合使用。

bark私有化部署

bark 是 IOS 上比较流行的消息组件,为了数据安全,可以选择私有化部署 bark 的服务端,可以参考 官方文档

1
docker run -dt --restart=always --name bark -p 8680:8080 -v `pwd`/bark-data:/data finab/bark-server

这里可以注意的是,不是非要公有云服务器才能实现的,只是 APP 端会有报错,但是消息还是照常推送的,如果是懒得做 https 等安全措施,直接在局域网内部署即可,另外 bark 在 APP 端还支持重置 key,后者恢复之前的 key,这样即使 Docker 部署的 bark server 被删除了,APP 端也可以恢复之前的 key。

k8s-eventer和bark

kube-eventer 是阿里开源的一个 Kubernetes 事件采集器,支持多种 sink 的输出方式,比如说 Kafka、ElasticSearch、Webhook 等等。我们这里主要是使用 Webhook 的方式来实现 bark 的推送,部署的方式参考 官方文档 即可,因为本文给的例子是对接 bark,这个在 kube-eventer 没有详细说明,这里做个介绍。对于 bark 在 kube-eventer 里可以理解成 general 的 webhook,主要是通过 HTTP 的方式来发送消息,关于对接 bark 主要还是通知模板的编写,下面是结合 bark Post 消息和 kube-eventer 的模板提供的例子。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
apiVersion: v1
kind: ConfigMap
metadata:
  name: custom-body
  namespace: kube-system
data:
  content: '{
   "title": "☸️kube-eventer",
   "icon": "https://runzhliu.cn/images/avatar.png",
   "body":  "EventType:  {{ .Type }}\nEventKind:  {{ .InvolvedObject.Kind }}\nEventObject: {{ . }}\nEventReason:  {{ .Reason }}\nEventTime:  {{ .LastTimestamp }}\nEventMessage:  {{ .Message }}"
   }'

下面就是具体的效果了。

/k8s-eventer%E5%92%8Cbark%E8%81%94%E5%8A%A8/img.png

另外如果有需要的话,还可以手动创建一个 Event 测试一下这个功能。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
apiVersion: v1
kind: Event
metadata:
  name: my-warning-event
  namespace: default
involvedObject:
  apiVersion: v1
  kind: Pod
  name: my-pod
  namespace: default
type: Warning
reason: HighCPUUsage
message: "The CPU usage has exceeded 80%."
source:
  component: custom-controller
firstTimestamp: "2025-04-16T10:00:00Z"
lastTimestamp: "2025-04-16T10:00:00Z"
count: 1

关于Event watch channel closed

issues#175,也记录过这个问题。

总结

笔者早年在前司也写过类似 Kubernetes 事件采集器,也是可以选择不同的 sink 把时间发送出去或者存储起来,年代有点久远了,且当时也没有开源。阿里开源的 kube-eventer 也很多年没有什么大的改动了,毕竟这并不是十分复杂的事情,主要还是对 Kubernetes 事件的处理和存储,当然也可以选择其他的存储方式,比如说 Kafka、ElasticSearch 等等。最后还是要考虑团队、公司使用的一些告警方式,是否需要私有化部署,是否需要公网入口等问题。本文就 kube-eventer 和 bark 的结合做了一个简单的介绍,当然也可以选择其他的告警方式,比如说钉钉、企业微信等,都是可以的。

参考资料

  1. bark文档