IoT边缘集群Kubernetes Events告警通知实现示例

本站所有内容来自互联网收集,仅供学习和交流,请勿用于商业用途。如有侵权、不妥之处,请第一时间联系我们删除!Q群:迪思分享

免费资源网 – https://freexyz.cn/
目录背景边缘集群限制关键需求方案架构图技术方案规划实施步骤1. 创建 roles2. 创建 kubernetes-event-exporter config3. 创建 Deployment自动化部署最终效果

背景

边缘集群(基于 树莓派 + K3S) 需要实现基本的告警功能。

边缘集群限制

CPU/内存/存储 资源紧张,无法支撑至少需要 2GB 以上内存和大量存储的基于 Prometheus 的完整监控体系方案(即使是基于 Prometheus Agent, 也无法支撑) (需要避免额外的存储和计算资源消耗)

网络条件,无法支撑监控体系,因为监控体系一般都需要每 1min 定时(或每时每刻)传输数据,且数据量不小;

存在 5G 收费网络的情况,且访问的目的端地址需要开通权限,且按照流量收费,且因为 5G 网络条件,网络传输能力受限,且不稳定(可能会在一段时间内离线);

关键需求

总结下来,关键需求如下:

实现对边缘集群异常的及时告警,需要知道边缘集群正在发生的异常情况;网络:网络条件情况较差,网络流量少,只只能开通极少数目的端地址,可以容忍网络不稳定(一段时间内离线)的情况;资源:需要尽量避免额外的存储和计算资源消耗

方案

综上所诉,采用如下方案实现:

基于 Kubernetes Events 的告警通知

架构图

IoT边缘集群Kubernetes Events告警通知实现示例插图

技术方案规划

从 Kubernetes 的各项资源收集 Events, 如:

pod

node

kubelet

crd

通过 kubernetes-event-exporter组件来实现对 Kubernetes Events 的收集;只筛选 Warning 级别 Events 供告警通知(后续,条件可以进一步定义)告警通过 飞书 webhook 等通信工具进行发送(后续,发送渠道可以增加)

实施步骤

手动方式:

在边缘集群上,执行如下操作:

1. 创建 roles

如下:

cat << _EOF_ | kubectl apply -f – — apiVersion: v1 kind: Namespace metadata: name: monitoring — apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: name: event-exporter-extra rules: – apiGroups: – “” resources: – nodes verbs: – get – list – watch — apiVersion: v1 kind: ServiceAccount metadata: namespace: monitoring name: event-exporter — apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: event-exporter roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: view subjects: – kind: ServiceAccount namespace: monitoring name: event-exporter — apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: event-exporter-extra roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: event-exporter-extra subjects: – kind: ServiceAccount namespace: kube-event-export name: event-exporter _EOF_

2. 创建 kubernetes-event-exporter config

如下:

cat &lt;&lt; _EOF_ | kubectl apply -f – apiVersion: v1 kind: ConfigMap metadata: name: event-exporter-cfg namespace: monitoring data: config.yaml: | logLevel: error logFormat: json route: routes: – match: – receiver: “dump” – drop: – type: “Normal” match: – receiver: “feishu” receivers: – name: “dump” stdout: {} – name: “feishu” webhook: endpoint: “https://open.feishu.cn/open-apis/bot/v2/hook/…” headers: Content-Type: application/json layout: msg_type: interactive card: config: wide_screen_mode: true enable_forward: true header: title: tag: plain_text content: XXX IoT K3S 集群告警 template: red elements: – tag: div text: tag: lark_md content: “**EventType:** {{ .Type }}n**EventKind:** {{ .InvolvedObject.Kind }}n**EventReason:** {{ .Reason }}n**EventTime:** {{ .LastTimestamp }}n**EventMessage:** {{ .Message }}” _EOF_
免费资源网 – https://freexyz.cn/


© 版权声明
THE END
★喜欢这篇文章吗?喜欢的话,麻烦动动手指支持一下!★
点赞15 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容