云原生实战:K8s 一键部署 Prometheus+Grafana+EFK 完整可观测平台

一、前言

在 Kubernetes 容器化集群运维中,监控指标 + 日志分析是集群可观测性的两大核心支柱。没有可观测体系,集群故障只能靠猜、排查全靠重启。

目前企业生产最主流、最稳定的组合:

  • 指标监控栈:Prometheus + Grafana + Alertmanager(集群、节点、容器、业务指标监控告警)

  • 日志收集栈:EFK(Elasticsearch + Fluentd + Kibana)(容器日志统一采集、存储、检索、分析)

本文基于Helm3 在 K8s 集群中从零搭建一套生产级可观测平台,全程一键部署、开箱即用,适合测试、预发、生产环境落地。

二、整体架构原理

1. 监控架构(Prometheus)

采用云原生标准 Pull 模式采集指标,组件分工明确:

  • kube-prometheus-stack:一站式全家桶,包含 Prometheus、Grafana、Alertmanager、Node-exporter、Kube-state-metrics、CRD 资源

  • Exporter:各类指标采集端(节点、MySQL、Redis、Nginx 等)

  • Prometheus:时序数据存储、指标抓取、告警规则管理

  • Grafana:可视化大屏,展示 CPU、内存、磁盘、网络、业务指标曲线

  • Alertmanager:统一告警分发,支持钉钉、企业微信、邮件、短信

2. 日志架构(EFK)

EFK 是替代传统 ELK 的轻量化容器日志方案,更适配 K8s:

  • Fluentd:K8s 日志采集客户端,部署为 DaemonSet,每个节点采集容器标准输出日志

  • Elasticsearch:分布式日志搜索引擎,负责日志持久化存储、分词、检索

  • Kibana:日志可视化 Web UI,支持关键词检索、日志过滤、可视化分析、日志大屏

3. 完整数据流

监控数据流:各类 Exporter → Prometheus 定时抓取 → 时序存储 → Grafana 展示 + Alertmanager 告警

日志数据流:容器 stdout 日志 → Fluentd 采集过滤 → Elasticsearch 存储 → Kibana 查询分析

三、环境前置要求

  • 可用 K8s 集群(1.24+ 任意版本)

  • 已安装 Helm3 包管理工具

  • 集群具备 StorageClass(支持持久化存储,防止数据丢失)

  • 节点资源充足(建议至少 2C4G 以上)

若未安装 Helm,执行以下命令快速安装:

复制代码

curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash

四、部署 Prometheus+Grafana 监控栈

1. 创建专属命名空间

统一将监控组件部署在 monitoring 命名空间,方便管理维护:

复制代码

kubectl create namespace monitoring

2. 添加 Helm 仓库并更新

复制代码

helm repo add prometheus-community https://prometheus-community.github.io/helm-charts helm repo update

3. 一键部署完整监控栈

通过 helm 一次性部署全套组件,并暴露 NodePort 方便外部访问:

复制代码

helm install prometheus prometheus-community/kube-prometheus-stack \ -n monitoring \ --set prometheus.service.type=NodePort \ --set grafana.service.type=NodePort \ --set alertmanager.service.type=NodePort

4. 查看部署状态

查看 Pod 运行状态,确保所有 Pod 处于 Running 状态:

复制代码

kubectl get pods -n monitoring

查看服务端口,获取访问地址:

复制代码

kubectl get svc -n monitoring

5. Grafana 登录密码获取

复制代码

kubectl get secret prometheus-grafana -n monitoring -o jsonpath="{.data.admin-password}" | base64 --decode ; echo

默认用户名:admin,输入上述密码即可登录 Grafana 控制台。

6. 核心能力说明

部署完成后默认自动监控:集群节点、容器、Pod、Deployment、CPU、内存、磁盘、网络、K8s 核心组件指标,无需手动配置采集规则。

五、部署 EFK 日志收集栈

1. 添加 EFK 所需 Helm 仓库

复制代码

helm repo add elastic https://helm.elastic.co helm repo update

2. 部署 Elasticsearch(日志存储)

单节点快速部署(测试/中小企业生产可用):

复制代码

helm install es elastic/elasticsearch \ -n monitoring \ --set replicas=1 \ --set minimumMasterNodes=1 \ --set service.type=NodePort

3. 部署 Kibana(日志可视化)

复制代码

helm install kibana elastic/kibana \ -n monitoring \ --set service.type=NodePort

4. 部署 Fluentd(日志采集端)

Fluentd 以 DaemonSet 方式运行,每台节点自动部署一个采集 Pod,全覆盖采集容器日志:

复制代码

helm install fluentd elastic/fluentd \ -n monitoring

六、部署验证与使用

1. 全局检查所有组件状态

复制代码

kubectl get all -n monitoring

所有 Pod 状态为 Running、服务正常暴露端口即为部署成功。

2. Prometheus 验证

访问 Prometheus UI,查看 Status-Targets,所有采集目标状态为 UP,说明指标采集正常。可通过 PromQL 查询各类指标,例如你常用的 MySQL 连接数指标:

复制代码

mysql_global_status_connections

3. Grafana 验证

内置大量 K8s 模板,直接导入即可查看:节点监控、容器监控、集群资源、网络流量等大屏。

4. Kibana 日志验证

登录 Kibana 后创建 index-pattern,匹配 fluentd 日志索引,即可实时检索、查看、过滤集群所有容器日志,快速定位程序报错、启动异常、接口报错等问题。

七、企业落地优化方案

  • 持久化优化:为 Prometheus、ES、Kibana 配置固定存储卷,避免重启数据丢失

  • 告警对接:Alertmanager 配置企业微信/钉钉告警,实现 CPU、内存、磁盘、Pod 异常实时推送

  • 日志清理:配置 ES 日志生命周期,自动清理7天前日志,释放磁盘空间

  • 权限管控:Grafana、Kibana 配置多用户权限,区分管理员、只读用户

  • 自定义监控:通过 ServiceMonitor 自动发现业务 Pod,采集自定义业务指标

八、总结

本文基于 Helm 在 K8s 中快速搭建了 Prometheus+Grafana 指标监控 + EFK 日志分析 全套可观测平台,彻底解决 K8s 集群"黑盒运维"问题:

  • 指标层面:全覆盖集群、节点、容器、中间件监控,支持可视化与告警

  • 日志层面:统一采集存储所有容器日志,故障排查效率大幅提升

  • 部署层面:Helm 一键部署,轻量化、易维护、易迁移,完全适配企业生产环境

这套架构是当前云原生运维面试高频、企业刚需的核心技术栈,熟练掌握可完全胜任 K8s 运维、云原生运维、容器平台运维岗位。

相关推荐
阿里云云原生23 分钟前
不改代码也能监控 AI Agent?揭秘 OBI 如何在内核层精准解析 GenAI 语义流量
云原生·agent
众人皆醒我独醉1 小时前
Pod 一直 Terminating,死活删不掉?三个凶手,每一个你都意想不到
面试·kubernetes
飞翔沫沫情2 小时前
K8s Alloy 采集 Pod 控制台日志
云原生·容器·kubernetes
spider_xcxc6 小时前
Prometheus + Grafana流程搭建总结
grafana·prometheus·云计算运维
潮起鲸落入海8 小时前
Kubernetes Metric Server, Quota and Limits
容器·kubernetes
摇滚侠8 小时前
云原生 Java 架构师的第一课 K8s+Docker+KubeSphere+DevOps 19-25
java·云原生·kubernetes
c_zyer9 小时前
一站式可观测新选择:OpenObserve 深度对标 ELK / Grafana+Prometheus / Netdata,附Docker一键部署实战
elk·grafana·prometheus·netdata·openobserve
我叫张小白。10 小时前
一个微服务电商+社区项目(瓷韵app)的技术深度复盘
docker·微服务·云原生·架构
咕噜咕噜的猪大侠10 小时前
《K8s 核心知识梳理:Deployment 滚动更新、JobCronJob、DaemonSet 和 Service》
云原生·容器·kubernetes
虚心的百褶裙10 小时前
远程调用服务架构设计及zookeeper技术详解(下篇)
分布式·zookeeper·云原生