news 2026/6/26 3:39:13

使用Kubernetes搭建性能监控系统

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用Kubernetes搭建性能监控系统

大家好,我是小悟。

Kubernetes是一个强大的容器编排平台,能大幅简化大规模、容器化应用的部署和管理。通过它搭建性能监控系统,可以实现高度的自动化和弹性。

下面是详细的步骤和说明,帮你从零开始,在Kubernetes上建立一个基于Prometheus、Grafana和Alertmanager的现代化性能监控系统。

第一步:部署 Prometheus 和 Alertmanager

Prometheus 是核心的监控数据抓取、存储和告警引擎。

1. 创建命名空间
将监控相关组件隔离到一个独立的命名空间中。

# 01-namespace.yaml apiVersion: v1 kind: Namespace metadata: name: monitoring

2. 部署 Prometheus
这里使用一个简化配置的Deployment示例。实际生产应使用StatefulSet管理数据持久化。

# 02-prometheus-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: prometheus-server namespace: monitoring spec: replicas: 1 selector: matchLabels: app: prometheus template: metadata: labels: app: prometheus spec: containers: - name: prometheus image: prom/prometheus:latest args: - "--config.file=/etc/prometheus/prometheus.yml" - "--storage.tsdb.path=/prometheus/data" ports: - containerPort: 9090 volumeMounts: - name: prometheus-config-volume mountPath: /etc/prometheus - name: prometheus-storage-volume mountPath: /prometheus/data volumes: - name: prometheus-config-volume configMap: name: prometheus-config - name: prometheus-storage-volume emptyDir: {} --- apiVersion: v1 kind: ConfigMap metadata: name: prometheus-config namespace: monitoring data: prometheus.yml: | global: scrape_interval: 15s scrape_configs: - job_name: 'kubernetes-pods' kubernetes_sd_configs: - role: pod relabel_configs: - source_labels: [__meta_kubernetes_pod_annotation_prometheus_io_scrape] action: keep regex: true

3. 部署 Alertmanager
Alertmanager负责处理Prometheus发送的告警,并进行分组、抑制和路由。

# 03-alertmanager-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: alertmanager namespace: monitoring spec: replicas: 1 selector: matchLabels: app: alertmanager template: metadata: labels: app: alertmanager spec: containers: - name: alertmanager image: prom/alertmanager:latest ports: - containerPort: 9093

4. 暴露服务
为Prometheus和Alertmanager创建Service,以便在集群内访问。

# 04-prometheus-alertmanager-service.yaml apiVersion: v1 kind: Service metadata: name: prometheus-service namespace: monitoring spec: selector: app: prometheus ports: - port: 80 targetPort: 9090 --- apiVersion: v1 kind: Service metadata: name: alertmanager-service namespace: monitoring spec: selector: app: alertmanager ports: - port: 80 targetPort: 9093

应用以上配置:

kubectl apply -f 01-namespace.yaml kubectl apply -f 02-prometheus-deployment.yaml kubectl apply -f 03-alertmanager-deployment.yaml kubectl apply -f 04-prometheus-alertmanager-service.yaml

第二步:部署 Grafana 数据可视化

Grafana 是强大的数据可视化工具,用于展示从 Prometheus 查询到的监控图表。

1. 部署 Grafana
同样以Deployment形式部署,并通过ConfigMap预设数据源。

# 05-grafana-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: grafana namespace: monitoring spec: replicas: 1 selector: matchLabels: app: grafana template: metadata: labels: app: grafana spec: containers: - name: grafana image: grafana/grafana:latest ports: - containerPort: 3000 env: - name: GF_SECURITY_ADMIN_PASSWORD value: "admin" # 生产环境请使用Secret管理密码 volumeMounts: - name: grafana-datasources-volume mountPath: /etc/grafana/provisioning/datasources volumes: - name: grafana-datasources-volume configMap: name: grafana-datasources --- apiVersion: v1 kind: ConfigMap metadata: name: grafana-datasources namespace: monitoring data: prometheus.yaml: | apiVersion: 1 datasources: - name: Prometheus type: prometheus url: http://prometheus-service.monitoring.svc.cluster.local:80 access: proxy isDefault: true

2. 暴露 Grafana 服务
创建Service,并为了方便访问,可额外创建一个NodePort或LoadBalancer类型的服务。

# 06-grafana-service.yaml apiVersion: v1 kind: Service metadata: name: grafana-service namespace: monitoring spec: selector: app: grafana ports: - port: 80 targetPort: 3000

应用配置:

kubectl apply -f 05-grafana-deployment.yaml kubectl apply -f 06-grafana-service.yaml

第三步:部署 Node Exporter

要监控Kubernetes节点的资源使用情况(CPU、内存、磁盘等),需要在每个节点上部署Node Exporter。

# 07-node-exporter-daemonset.yaml apiVersion: apps/v1 kind: DaemonSet metadata: name: node-exporter namespace: monitoring spec: selector: matchLabels: app: node-exporter template: metadata: labels: app: node-exporter spec: hostNetwork: true hostPID: true containers: - name: node-exporter image: prom/node-exporter:latest args: - "--path.rootfs=/host" ports: - containerPort: 9100 volumeMounts: - name: host-root mountPath: /host readOnly: true volumes: - name: host-root hostPath: path: /

应用配置:

kubectl apply -f 07-node-exporter-daemonset.yaml

第四步:集成与验证

所有组件部署完成后,需要进行验证和集成。

  1. 检查Pod状态:确保所有Pod都处于Running状态。

    kubectl get pods -n monitoring
  2. 访问 Grafana 仪表盘

    • 获取访问地址:kubectl get svc grafana-service -n monitoring -o wide
    • 使用默认用户名admin和你在YAML中设置的密码登录。
    • 在Grafana中导入官方或社区的Prometheus监控仪表盘(如ID为1860的“Node Exporter Full”仪表盘),即可看到丰富的节点监控图表。
  3. 配置告警规则:在Prometheus配置中添加自定义告警规则,当指标(如节点内存使用率 > 90%)触发阈值时,告警会被发送到Alertmanager进行处理和通知。

总结与进阶

通过以上步骤,已经成功在Kubernetes上搭建了一个具备监控数据采集(Prometheus)、可视化展示(Grafana)和告警管理(Alertmanager)核心能力的系统。

这个系统充分利用了Kubernetes的声明式API和自动化管理能力,只需描述组件的期望状态,Kubernetes就会负责调度、部署和维护。

生产环境注意事项

这个示例是入门级配置,面向生产环境时,必须考虑以下几点:

考虑方面生产环境建议
数据持久化为Prometheus和Grafana配置PersistentVolume (PV)PersistentVolumeClaim (PVC),确保监控数据在Pod重启后不丢失。
高可用性部署多个Prometheus、Alertmanager和Grafana副本,并结合反亲和性策略,将它们调度到不同的节点上,避免单点故障。
安全性为Pod配置合理的资源请求和限制;使用RBAC角色严格控制访问权限;敏感信息(如密码)务必使用Secret对象管理。
可扩展性遵循微服务模式,可以通过配置让Prometheus自动发现Kubernetes中的Pod、Service等资源进行监控。对于更复杂的监控需求,可以研究使用Prometheus Operator来简化整个监控栈的声明式管理。
外部访问使用Ingress Controller或云服务商的LoadBalancer来安全、统一地暴露Grafana等服务,而不是简单的NodePort。

这套基于Kubernetes的监控方案性能强大、扩展灵活、与云原生生态紧密结合。可以根据实际业务需求,逐步添加对特定应用、中间件(如MySQL、Redis)或自定义业务指标的监控,构建起全方位的可观测性体系。

谢谢你看我的文章,既然看到这里了,如果觉得不错,随手点个赞、转发、在看三连吧,感谢感谢。那我们,下次再见。

您的一键三连,是我更新的最大动力,谢谢

山水有相逢,来日皆可期,谢谢阅读,我们再会

我手中的金箍棒,上能通天,下能探海

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/20 17:42:32

上周热点回顾(1.26-2.1)

热点随笔: Clawdbot部署教程,10分钟白嫖Qwen,给自己搭个7x24小时AI助理 (张不惑) Clawdbot 完整对接飞书教程 手把手搭建你的专属 AI 助手 (JaguarJack) 破防了!2026开年3位程序员接连猝死,最年轻26岁,…

作者头像 李华
网站建设 2026/6/21 16:46:16

手把手教你降低AI率:从免费降AI指令到专业工具测评

凌晨两点,看着查重报告上那依旧居高不下的ai率,心态真的崩了。 这应该就是在这个毕业季,无数熬夜赶论文的兄弟姐妹们的真实写照。你最后可能会破罐子破摔地觉得,ai率高?这有啥的,反正我的论文确确实实就是自…

作者头像 李华
网站建设 2026/6/13 9:45:42

Java搭建:旅行攻略搭子系统源码大揭秘

以下是对Java旅行攻略搭子系统源码的揭秘,涵盖技术架构、核心功能、关键算法与代码示例:一、技术架构:高并发与实时交互的基石后端框架:Spring Boot 2.7/3.0:作为核心框架,提供快速集成、自动配置和内置Tom…

作者头像 李华
网站建设 2026/6/20 16:20:45

2026年软件测试公众号热度解析与数据导入检查实战

一、热度最高的内容类型及核心驱动因素 2026年初,软件测试公众号的爆款内容集中于三大类型,均以解决从业者实际痛点为核心,热度占比超80%。数据导入手动检查作为高频场景,可无缝融入这些热点: AI工具评测与实战教程&a…

作者头像 李华
网站建设 2026/6/22 15:02:00

数字化农业生产管理(有完整资料)

资料查找方式:特纳斯电子(电子校园网):搜索下面编号即可编号:CP-51-2021-067设计简介:本设计是基于单片机的数字化农业管理系统,主要实现以下功能:可通过OLED显示温湿度、光照强度和…

作者头像 李华