本章详细介绍纯自定义原生部署Prometheus监控Kubernetes集群的整体架构、数据流转逻辑、各核心组件功能及依赖关系,明确RBAC、采集组件、核心服务的部署意义,为整体部署流程提供原理支撑。
1、整体架构流程
本次自定义部署采用「分层采集-统一存储计算-可视化告警」的经典监控架构,摒弃Prometheus Operator及CRD资源,所有组件独立部署、配置完全自主可控,架构清晰、运维简单。整体数据流转及组件调用关系如下:

2、分层架构说明
本监控架构分为数据采集层、核心计算存储层、可视化告警层、权限支撑层四层,分层清晰、职责单一:
2.1 数据采集层
负责全方位采集K8s集群各类监控指标,覆盖节点、容器、集群资源三大维度,是监控数据的来源层,包含三个核心采集主体:节点硬件指标采集、容器指标采集、K8s资源状态采集。
2.2 权限支撑层
为监控组件提供K8s集群访问权限,是集群服务发现、资源抓取的基础保障,核心为ServiceAccount及RBAC权限体系,无权限则监控组件无法正常采集数据。
2.3 核心计算存储层
以Prometheus Server为核心,依托自定义配置文件,实现自动化服务发现、定时指标抓取、时序数据存储、告警规则运算,是整个监控系统的中枢核心。
2.4 可视化告警层
面向运维人员提供可视化展示和故障告警能力,Grafana负责数据可视化呈现,Alertmanager负责告警统一处理与推送,实现监控可视化、故障及时感知。
3、各核心组件功能及部署用途
3.1 Namespace 命名空间(monitoring)
为所有监控组件独立创建专属命名空间,实现监控资源与业务资源的物理隔离。统一管理监控相关的Pod、Service、配置、权限资源,方便后续运维管理、资源统计、批量更新与卸载,避免监控资源与业务资源相互干扰。
3.2 ServiceAccount 服务账号
Kubernetes集群内部服务身份凭证,为Prometheus、kube-state-metrics等无状态服务提供集群内合法身份。监控Pod启动后将绑定该账号,用于对接K8s APIServer,是RBAC权限授权的核心主体,组件所有集群资源访问行为均依托该身份完成。
3.3 RBAC 权限体系(ClusterRole、ClusterRoleBinding)
RBAC是自定义部署的核心关键组件,解决监控组件权限不足问题,保障服务发现和指标采集正常运行,分为两部分:
•ClusterRole(集群角色):定义精细化权限规则,明确监控组件可执行的操作。允许Prometheus获取集群节点、Pod、服务、端点资源信息及监控指标;允许kube-state-metrics监听、列举集群所有K8s资源对象,采集资源状态数据。
•ClusterRoleBinding(集群角色绑定):将ClusterRole定义的权限,绑定至监控专属ServiceAccount,完成权限授权。实现「身份+权限」的关联,让监控Pod拥有访问集群资源的合法权限,彻底解决权限不足导致的Target下线、服务发现失败、无指标等问题。
3.4 node-exporter(DaemonSet)
集群节点硬件及系统指标专属采集组件,采用DaemonSet方式部署,保证集群每一个节点都会运行一个采集Pod。主要负责采集宿主机底层硬件及系统指标,包含CPU使用率、内存占用、磁盘IO、磁盘使用率、网络流量、系统负载、文件句柄等操作系统层级监控数据,完整覆盖节点基础监控场景。
3.5 kube-state-metrics(Deployment)
Kubernetes集群资源状态专属采集组件,区别于node-exporter的硬件指标采集,该组件专注于K8s原生资源对象状态采集。依托RBAC权限监听APIServer资源变化,采集Node、Pod、Deployment、DaemonSet、StatefulSet、PVC、Namespace、任务副本数、运行状态、重启状态等资源指标,是实现K8s集群资源监控、业务运行状态监控的核心组件。
3.6 kubelet & cAdvisor(集群内置组件)
为K8s集群原生内置组件,无需手动部署。kubelet提供节点健康状态、节点运行状态指标;cAdvisor专注于采集容器层级指标,包含单个容器的CPU、内存、网络、磁盘资源使用率。Prometheus通过K8s服务发现自动抓取该部分指标,实现容器维度的精细化监控。
3.7 Prometheus ConfigMap
Prometheus核心配置挂载载体,以配置卷形式挂载至Prometheus Pod内部。统一存储prometheus.yml主配置文件,定义全局采集间隔、评估间隔、K8s服务发现规则、指标抓取任务、标签重写规则等核心配置。通过ConfigMap管理配置,支持不重启Pod的情况下更新监控配置,提升运维便捷性。
3.8 Prometheus Server
整个监控系统的核心中枢,承接所有采集组件的监控数据,核心能力包含:通过K8s服务发现自动动态发现集群内所有监控目标;定时抓取全维度监控指标;本地存储时序监控数据;根据自定义规则进行告警阈值计算、触发告警;提供PromQL查询接口及Web UI,同时为Grafana可视化提供数据支撑。
3.9 Alertmanager
独立的告警处理组件,与Prometheus解耦部署。接收Prometheus推送的告警信息,实现告警去重、降噪、分组、静默、路由分发,支持将告警推送至钉钉、企业微信、邮件等渠道,统一管理集群故障告警,避免告警风暴,实现故障及时通知。
3.10 Grafana
专业监控可视化组件,对接Prometheus数据源,通过导入成熟监控模板,将原始时序指标转化为直观的趋势图、仪表盘、拓扑图。可视化展示集群节点、容器、业务资源的运行状态,替代Prometheus原生简易UI,为运维人员提供直观、全面的集群监控视图。
4、核心依赖关系总结
权限依赖:所有集群服务发现、资源抓取功能均依赖ServiceAccount+RBAC授权,权限异常会直接导致监控目标离线、无指标;
数据依赖:节点硬件指标依赖node-exporter,K8s资源状态依赖kube-state-metrics,容器指标依赖集群自带cAdvisor;
服务依赖:Prometheus依赖ConfigMap加载配置,Grafana、Alertmanager依赖Prometheus提供的监控数据与告警事件。
夜雨聆风