将Kubernetes事件通知到Slack
目标
-
- kubernetesのeventが大好き
- Slack中毒
概述
我创建了一个工具。可以在以下链接找到:https://github.com/buildsville/kube-event-watcher
经过
kubernetes事件流中包含了集群发生的事件和节点问题检测器检测到的事件等。这些事件中含有对故障排除有用的信息,有时会悄悄地通过,但在一定时间(默认为1小时)后会消失,并且需要使用kubectl get ev等命令来查看(+希望能够过滤和格式化以提高可读性),让人感觉略微不方便。
在那之后,我开始寻找一个能够很好处理这个问题的好工具
https://github.com/bitnami-labs/kubewatch 这个是用来通知资源变更的,所以与我们现在的目的不同。。
https://github.com/GoogleCloudPlatform/k8s-stackdriver/tree/master/event-exporter/
这正是我需要的,但…
根据他们的说法,事件导出器只导出到Stackdriver。
对于我目前仅限于AWS的情况来说,这是一个不太友好的工具。
实际上,我想要与Slack集成,而不是AWS或GCP这些。
所以,最后找不到,所以我自己做了。
工作

我现在实际在使用,效果相当不错,对我很有帮助。
关于如何使用,我已经在README中写了,所以这里就不再详细说明了。不过我想写一些关于使用后的感想。
-
- 全部受け取ると相当量が多い
楽しいのはほんの最初だけ
podひとつdeployするだけで5個6個と通知が来る…
configでしっかりフィルタリングしよう
重要度が恐ろしくピンキリ
WarningとNormalがあるし当然だが
これもconfigで通知するチャンネルを割り振られるようにした
countをprometheusのmetricsとして出してみたが油断すると描画が重い
メトリクスとしてそれほど重要な項目にはならなそうだけど、もし使うならpromQLできちんと制御するしか
同じeventが短時間にドバドバ出るやつがある
例えばNodeを増やす時に立ち上がるのを待ってる間、 FailedScheduling がすごいたくさん出る
eventのcreateだけを通知するようにすれば最初の1回だけ通知されるが、当然通知してほしいupdateも通知されなくなる
kube-apiserverのflag –event-ttl を短めに調整するなどと組み合わせていい感じにチューニングするか
気になったら都度configを細かく設定してやるか
後からeventの流れを追いたい時にslackだとちょっと厳しい
のでCloudwatchLogsにも出せるようにした
私が知らないだけでそもそもこんなもの必要がないイケてるeventのハンドリング方法があるんじゃないか
最后,这种东西如果不流向能看到的地方,很难见到。这次就到此为止。
追述
这里有一个链接,链接是 ultimateboy 在 Github 上的 slack8s 项目。