k8s部署ELK补充篇:kubernetes-event-exporter收集Kubernetes集群中的事件
k8s部署ELK补充篇:kubernetes-event-exporter收集Kubernetes集群中的事件
文章目录
- k8s部署ELK补充篇:kubernetes-event-exporter收集Kubernetes集群中的事件
- 一、kubernetes-event-exporter简介
- 二、kubernetes-event-exporter实战部署
- 1. 创建Namespace(elk-namespace.yaml)
- 2. 部署Logstash(event-logstash.yaml)
- 3. 部署kubernetes-event-exporter(event-exporter.yaml)
- 4. 部署所有资源
- 5. 验证Logstash Pod状态
- 三、Kibana页面展示
- 总结
在 Kubernetes 集群中,事件(Event) 是用于记录资源状态变化和异常信息的重要机制,常用于排查部署问题、资源调度异常或系统错误等。然而,Kubernetes 默认只保留最近一小时内的事件,且仅能通过 kubectl get events
命令临时查看,无法满足集中管理、持久化存储和告警通知等生产需求。
为了解决这一问题,我们可以引入 kubernetes-event-exporter
,它能够实时捕捉集群中的事件,并将其导出到日志系统、告警平台或其他后端存储系统中。配合 ELK(Elasticsearch + Logstash + Kibana)这一成熟的日志分析平台,我们可以实现对集群事件的统一采集、分析和可视化展示。
本篇文章将介绍如何在 Kubernetes 环境中部署 kubernetes-event-exporter,实现事件的收集与输出,为集群可观测性和故障排查提供更全面的数据支撑。
一、kubernetes-event-exporter简介
kubernetes-event-exporter 是一款专为 Kubernetes 设计的轻量级事件收集与导出工具,能够实时捕捉 Kubernetes 集群中的事件(Events),并将其导出到指定的后端系统,如 Elasticsearch、Loki、Kafka、Webhook 或文件等。
相比于通过 kubectl get events 命令手动查看事件,这款工具支持 自动化
、持久化
、结构化
地处理事件数据,特别适用于与日志系统、监控平台或告警系统集成,实现对集群状态的可观测性增强和异常快速响应。
kubernetes-event-exporter 提供了灵活的过滤规则和接收器配置,用户可以根据事件的类型、命名空间、资源或原因等条件,自定义输出策略,是构建 Kubernetes 运维监控体系的有力补充组件。
二、kubernetes-event-exporter实战部署
1. 创建Namespace(elk-namespace.yaml)
首先,创建一个新的命名空间,用于部署 ELK 相关的资源
apiVersion: v1
kind: Namespace
metadata:name: elk
2. 部署Logstash(event-logstash.yaml)
以下配置将部署 Logstash
,并从 Kafka 中拉取事件数据,再输出到 Elasticsearch
kind: Deployment
apiVersion: apps/v1
metadata:name: kube-event-logstashnamespace: elklabels:app: kube-event-logstash
spec:replicas: 1selector:matchLabels:app: kube-event-logstashtemplate:metadata:creationTimestamp: nulllabels:app: kube-event-logstashannotations:kubesphere.io/restartedAt: '2024-02-22T09:03:36.215Z'spec:volumes:- name: kube-event-logstash-pipeline-configconfigMap:name: kube-event-logstash-pipeline-configdefaultMode: 420- name: kube-event-logstash-configconfigMap:name: kube-event-logstash-config- name: logstash-configemptyDir: {}initContainers:- name: copy-logstash-configimage: harbor.local/k8s/busybox:1.37.0command: ['sh', '-c', 'cp /tmp/logstash.yml /usr/share/logstash/config/logstash.yml && chmod 777 /usr/share/logstash/config/logstash.yml']volumeMounts:- name: kube-event-logstash-configmountPath: /tmp/logstash.ymlsubPath: logstash.yml- name: logstash-configmountPath: /usr/share/logstash/configcontainers:- name: kube-event-logstashimage: harbor.local/k8s/logstash:7.17.0env:- name: NODE_NAMEvalueFrom:fieldRef:apiVersion: v1fieldPath: metadata.name- name: PIPELINE_BATCH_SIZEvalue: '4000'- name: PIPELINE_BATCH_DELAYvalue: '100'- name: PIPELINE_WORKERSvalue: '4'- name: LS_JAVA_OPTSvalue: '-Xms2g -Xmx3500m' #JVM内存设置resources:limits:cpu: '2'memory: 4Girequests:cpu: '1'memory: 1GivolumeMounts:- name: kube-event-logstash-pipeline-configmountPath: /usr/share/logstash/pipeline- name: logstash-configmountPath: /usr/share/logstash/config/logstash.ymlsubPath: logstash.ymllivenessProbe:tcpSocket:port: 9600initialDelaySeconds: 39timeoutSeconds: 5periodSeconds: 30successThreshold: 1failureThreshold: 2readinessProbe:tcpSocket:port: 9600initialDelaySeconds: 39timeoutSeconds: 5periodSeconds: 30successThreshold: 1failureThreshold: 2terminationMessagePath: /dev/termination-logterminationMessagePolicy: FileimagePullPolicy: IfNotPresentrestartPolicy: AlwaysterminationGracePeriodSeconds: 30dnsPolicy: ClusterFirstsecurityContext: {}schedulerName: default-schedulerstrategy:type: RollingUpdaterollingUpdate:maxUnavailable: 25%maxSurge: 25%revisionHistoryLimit: 10progressDeadlineSeconds: 600
---
kind: ConfigMap
apiVersion: v1
metadata:name: kube-event-logstash-pipeline-confignamespace: elk
data:logstash.conf: |-input {kafka {bootstrap_servers => "kafka-0.kafka-headless.elk.svc.cluster.local:9092"group_id => "logstash-consumer-group-event"topics => ["k8s-event"]codec => "json"consumer_threads => 1decorate_events => truesecurity_protocol => "PLAINTEXT" }}output {elasticsearch {hosts => ["http://elasticsearch-0.elasticsearch-cluster.elk.svc.cluster.local:9200"]index => "k8s-event-%{+YYYY.MM.dd}"}}
---
kind: ConfigMap
apiVersion: v1
metadata:name: kube-event-logstash-confignamespace: elk
data:logstash.yml: |-http.host: "0.0.0.0"xpack.monitoring.elasticsearch.hosts: ["http://elasticsearch-0.elasticsearch-cluster.elk.svc.cluster.local:9200"]
3. 部署kubernetes-event-exporter(event-exporter.yaml)
包含 ServiceAccount、ClusterRoleBinding、配置文件 ConfigMap 及 Deployment
apiVersion: v1
kind: ServiceAccount
metadata:namespace: elkname: event-exporter
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:name: event-exporter
roleRef:apiGroup: rbac.authorization.k8s.iokind: ClusterRolename: view
subjects:- kind: ServiceAccountnamespace: elkname: event-exporter
---
apiVersion: v1
kind: ConfigMap
metadata:name: event-exporter-cfgnamespace: elk
data:config.yaml: |logLevel: errorlogFormat: jsonroute:routes:- match:- receiver: "kafka"drop:- kind: "Service" #可选,忽略 Service 类型事件receivers:- name: "kafka"kafka:clientId: "kubernetes"topic: "k8s-event"brokers:- "kafka-0.kafka-headless.elk.svc.cluster.local:9092"compressionCodec: "snappy"layout: #自定义字段格式kind: "{{ .InvolvedObject.Kind }}"namespace: "{{ .InvolvedObject.Namespace }}"name: "{{ .InvolvedObject.Name }}"reason: "{{ .Reason }}"message: "{{ .Message }}"type: "{{ .Type }}"timestamp: "{{ .GetTimestampISO8601 }}"cluster: "sda-pre-center"
---
apiVersion: apps/v1
kind: Deployment
metadata:name: event-exporternamespace: elk
spec:replicas: 1template:metadata:labels:app: event-exporterversion: v1spec:serviceAccountName: event-exportercontainers:- name: event-exporterimage: harbor.local/k8s/kubernetes-event-exporter:v1imagePullPolicy: IfNotPresentargs:- -conf=/data/config.yamlvolumeMounts:- mountPath: /dataname: cfgvolumes:- name: cfgconfigMap:name: event-exporter-cfgselector:matchLabels:app: event-exporterversion: v1
4. 部署所有资源
将上述 YAML 文件保存后,使用以下命令统一部署
kubectl apply -f elk-namespace.yaml
kubectl apply -f event-logstash.yaml
kubectl apply -f event-exporter.yaml
5. 验证Logstash Pod状态
kubectl get pod -n elk
三、Kibana页面展示
访问地址:http://ip:30601
在 Kibana 中创建索引模式 k8s-event-*
,可视化展示集群事件数据(不知道怎么创建的可以看我前面的文章)
总结
📌 本文作为对 ELK 在 Kubernetes 中部署使用的补充,介绍了如何通过部署 kubernetes-event-exporter 实时采集集群事件,并结合 Kafka 与 Logstash 将事件数据统一输出至 Elasticsearch,从而实现对集群事件的集中管理与可视化展示。
通过这一方案,Kubernetes 原生事件不再局限于短时查看和手动排查,而是纳入到完整的日志与监控体系中,极大提升了运维的效率与可观测性,是生产环境中不可或缺的重要组成部分。
相关文章:

k8s部署ELK补充篇:kubernetes-event-exporter收集Kubernetes集群中的事件
k8s部署ELK补充篇:kubernetes-event-exporter收集Kubernetes集群中的事件 文章目录 k8s部署ELK补充篇:kubernetes-event-exporter收集Kubernetes集群中的事件一、kubernetes-event-exporter简介二、kubernetes-event-exporter实战部署1. 创建Namespace&a…...
【Excel VBA 】窗体控件分类
一、Excel 窗体控件分类 Excel 中的窗体控件分为两大类型,适用于不同的开发需求: 类型所在选项卡特点表单控件开发工具 → 插入 → 表单控件简单易用,直接绑定宏,兼容性好,适合基础自动化操作。ActiveX 控件开发工具…...

C++性能相关的部分内容
C性能相关的部分内容 与底层硬件紧密结合 大端存储和小端存储(硬件概念) C在不同硬件上运行的结果可能不同 比如:输入01234567,对于大端存储的硬件会先在较大地址上先进行存储,而对于小端存储的硬件会先在较小地址上…...
Spring Boot 项目中常用的 ORM 框架 (JPA/Hibernate) 在性能方面有哪些需要注意的点?
在 Spring Boot 项目中使用 JPA (Java Persistence API) / Hibernate (作为 JPA 的默认实现) 时,性能是一个非常关键的考量点。虽然 ORM 极大地简化了数据库交互,但如果不注意,很容易引入性能瓶颈。以下是一些关键的性能注意事项:…...
基于大模型的大肠癌全流程预测与诊疗方案研究报告
目录 一、引言 1.1 研究背景与意义 1.2 研究目的与创新点 二、大模型技术概述 2.1 大模型原理与架构 2.2 大模型在医疗领域的应用现状 三、术前风险预测与准备 3.1 术前风险预测指标 3.2 大模型预测方法与结果 3.3 基于预测结果的术前准备方案 四、术中风险预测与应…...
解决DeepSeek部署难题:提升效率与稳定性的关键策略
DeepSeek 部署中常见问题及对应解决方案 随着大模型技术的快速发展,DeepSeek 作为国内领先的大语言模型之一,广泛应用于自然语言处理、智能客服、内容生成等多个领域。 然而,在实际部署过程中,许多开发者和企业会遇到一系列挑战&a…...

AI进行提问、改写、生图、联网搜索资料,嘎嘎方便!
极客侧边栏-AI板块 目前插件内已接入DeepSeek-R1满血版、Qwen3满血版 、豆包/智谱最新发布的推理模型以及各种顶尖AI大模型,并且目前全都可以免费不限次数使用,秒回不卡顿,联网效果超好! 相比于市面上很多AI产品,极客…...

GStreamer开发笔记(四):ubuntu搭建GStreamer基础开发环境以及基础Demo
若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/147714800 长沙红胖子Qt(长沙创微智科)博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、O…...

2021年认证杯SPSSPRO杯数学建模A题(第二阶段)医学图像的配准全过程文档及程序
2021年认证杯SPSSPRO杯数学建模 A题 医学图像的配准 原题再现: 图像的配准是图像处理领域中的一个典型问题和技术难点,其目的在于比较或融合同一对象在不同条件下获取的图像。例如为了更好地综合多种信息来辨识不同组织或病变,医生可能使用…...

CV中常用Backbone-3:Clip/SAM原理以及代码操作
前面已经介绍了简单的视觉编码器,这里主要介绍多模态中使用比较多的两种backbone:1、Clip;2、SAM。对于这两个backbone简单介绍基本原理,主要是讨论使用这个backbone。 1、CV中常用Backbone-2:ConvNeXt模型详解 2、CV中…...

RPC 协议详解、案例分析与应用场景
一、RPC 协议原理详解 RPC 协议的核心目标是让开发者像调用本地函数一样调用远程服务,其实现过程涉及多个关键组件与流程。 (一)核心组件 客户端(Client):发起远程过程调用的一方,它并不关心调…...

dify-plugin-daemon的.env配置文件
源码位置:dify-plugin-daemon\.env 本文使用dify-plugin-daemon v0.1.0版本,主要总结了dify-plugin-daemon\.env配置文件。为了本地调试方便,采用本地运行时环境WSL2Ubuntu22.04方式运行dify-plugin-daemon服务。 一.服务器基本配置 服务器…...
【Python】开发工具uv
文章目录 1. uv install1.1 下载安装脚本来安装1.2 使用pipx安装uv1.3 补充 2. 考虑在离线系统上安装uv2.1 下载并上传安装包2.2 用户级安装uv(~/.local/bin/)2.3 补充 3. uv 管理Python解释器4. uv 管理依赖5. uv运行代码5.1 uv不在项目下执行脚本5.2 u…...
《技术择时,价值择股》速读笔记
文章目录 书籍信息概览技术择时价值择股投资策略投资心态 书籍信息 书名:《技术择时,价值择股:A股投资实战笔记》 作者:二十八画生 概览 技术择时 三种简单方法,教你买在起涨点 趋势行情中的“买点”判断ÿ…...
Python可视化设计原则
在数据驱动的时代,可视化不仅是结果的呈现方式,更是数据故事的核心载体。Python凭借其丰富的生态库(Matplotlib/Seaborn/Plotly等),已成为数据可视化领域的主力工具。但工具只是起点,真正让图表产生价值的&…...
SAP重塑云ERP应用套件
在2025年Sapphire大会上,SAP正式发布了其云ERP产品的重塑计划,推出全新“Business Suite”应用套件,并对供应链相关应用进行AI增强升级。这一变革旨在简化新客户进入SAP生态系统的流程,同时为现有客户提供更加统一、智能和高效的业…...
2025.5.25总结
今天早上刷了会手机,然后下午去刷了一道科目一,限时训练3.5h。遗憾的是,这周只刷了一道题,并没有达成每周两道的目标。 其次,一天下来跟平时的节假日一样,有些小压抑。我也察觉到了自己的情绪。烦心事无非…...

(九)PMSM驱动控制学习---无感控制之高阶滑膜观测器
在之前的文章中,我们介绍了永磁同步电机无感控制中的滑模观测器,但是同时我们也认识到了他的缺点:因符号函数带来的高频切换分量,使用低通滤波器引发相位延迟;在本篇文章,我们将会介绍高阶滑模观测器的无感…...
6个跨境电商独立站平台
1. WP最主题(WPZUI) 官网:http://www.wpzui.com 简介: WP最主题专注于专业WordPress主题开发定制,致力于为用户提供高质量、高性能的WordPress主题。其主题设计注重用户体验和SEO优化,适用于多种网站类型,包括企业站…...
电子电路:电学都有哪些核心概念?
电子是基本粒子,带负电荷。电荷是物质的一种属性,电子带有负电荷,而质子带有正电荷。电荷的单位是库仑。 电流呢,应该是指电荷的流动,单位是安培,也就是库仑每秒。所以电流其实就是电荷在导体中的移动形成的。比如,当电子在导线中流动时,就形成了电流。不过要注意,传…...
SQL进阶之旅 Day 2:基础查询优化技巧
【SQL进阶之旅 Day 2】基础查询优化技巧 开篇:为什么需要基础查询优化? 在SQL学习的旅程中,掌握基础查询优化是迈向专业数据库开发的关键一步。随着数据量的爆炸式增长,简单的SELECT语句已经无法满足现代应用对性能的要求。今天…...
时序数据库 TDengine × Superset:一键构建你的可视化分析系统
如果你正在用 TDengine 管理时序数据,写 SQL 查询没问题,但一到展示环节就犯难——图表太基础,交互不够,甚至连团队都看不懂你辛苦分析的数据成果?别担心,今天要介绍的这个组合,正是为你量身打造…...
一键化部署
好的,我明白了。你希望脚本变得更简洁,主要负责: 代码克隆:从 GitHub 克隆你的后端和前端项目,并在克隆前确保目标目录为空。文件复制:将你预先准备好的 Dockerfile (后端和前端各一个)、前端的 nginx.con…...
Win 系统 conda 如何配置镜像源
通过命令添加镜像源(推荐) 以 清华源 为例,依次执行以下命令: # 添加主镜像源 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main # 添加免费开源镜像源 conda config --add channels http…...

Devicenet主转Profinet网关助力改造焊接机器人系统智能升级
某汽车零部件焊接车间原有6台焊接机器人(采用Devicenet协议)需与新增的西门子S7-1200 PLC(Profinet协议)组网。若更换所有机器人控制器或上位机系统,成本过高且停产周期长。 《解决方案》 工程师选择稳联技术转换网关…...

《STL--list的使用及其底层实现》
引言: 上次我们学习了容器vector的使用及其底层实现,今天我们再来学习一个容器list, 这里的list可以参考我们之前实现的单链表,但是这里的list是双向循环带头链表,下面我们就开始list的学习了。 一:list的…...
whisper相关的开源项目 (asr)
基于 Whisper(OpenAI 的开源语音识别模型)的开源项目有很多,涵盖了不同应用场景和优化方向。以下是一些值得关注的项目: 1. 核心工具 & 增强版 Whisper OpenAI Whisper 由 OpenAI 开源的通用语音识别模型,支持多语…...

python的pip怎么配置的国内镜像
以下是配置pip国内镜像源的详细方法: 常用国内镜像源列表 清华大学:https://pypi.tuna.tsinghua.edu.cn/simple阿里云:https://mirrors.aliyun.com/pypi/simple中科大:https://pypi.mirrors.ustc.edu.cn/simple华为云࿱…...

PCB 通孔是电容性的,但不一定是电容器
哼?……这是什么意思?…… 多年来,流行的观点是 PCB 通孔本质上是电容性的,因此可以用集总电容器进行建模。虽然当信号的上升时间大于或等于过孔不连续性延迟的 3 倍时,这可能是正确的,但我将向您展示为什…...
领域驱动设计与COLA框架:从理论到实践的落地之路
目录 引言 DDD核心概念 什么是领域驱动设计 DDD的核心概念 1. 统一语言(Ubiquitous Language) 2. 限界上下文(Bounded Context) 3. 实体(Entity)与值对象(Value Object) 4. 聚…...