用 Helm 在 Kubernetes 上部署 Prometheus

Helm 部署 Prometheus 到 K8s 全流程:添加仓库、安装 chart、values 定制(持久化、保留期、资源)、kube-prometheus-stack 全家桶方案与生产注意事项。

最佳实践
用 Helm 在 Kubernetes 上部署 Prometheus技术指南封面

在 Kubernetes 上部署 Prometheus 最省事的方式是 Helm chart——一条命令拉起 Prometheus + Alertmanager + Node Exporter + kube-state-metrics 全家桶。本文走完从安装到生产定制的流程。

为什么是 Helm

手工维护 Prometheus 的 K8s 资源(Deployment、Service、ConfigMap、RBAC、PVC……)是几十上百个 YAML 的工作量。Helm 把它们打包成 chart,参数化定制,升级回滚一键完成。

快速开始

# 添加仓库
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

# 默认配置安装
helm install prometheus prometheus-community/prometheus --namespace monitoring --create-namespace

几分钟后 kubectl get pods -n monitoring 应看到 prometheus-server、alertmanager、node-exporter(DaemonSet)、kube-state-metrics 全部 Running。

生产必改:values 定制

# values.yaml
server:
  persistentVolume:
    enabled: true
    size: 50Gi                    # 默认 8Gi,生产远远不够
  retention: 30d                  # 保留期
  resources:
    requests: { cpu: 500m, memory: 2Gi }
    limits:   { cpu: 2,    memory: 8Gi }

alertmanager:
  persistentVolume:
    enabled: true
helm upgrade prometheus prometheus-community/prometheus -n monitoring -f values.yaml

⚠️ chart 输出的警告要认真看——比如持久化默认关闭,Pod 重建数据全丢。

更主流的选择:kube-prometheus-stack

如果目标是"K8s 集群监控全家桶",直接用更大的 chart:

helm install monitoring prometheus-community/kube-prometheus-stack -n monitoring

它在 Prometheus 之上打包了:Grafana(含几十套预置 K8s 仪表盘)、Prometheus Operator(用 ServiceMonitor/PodMonitor CRD 声明式管理抓取目标)、预置告警规则集。K8s 场景下这基本是社区标准答案。

核心概念:ServiceMonitor

Operator 模式下,抓取配置不再改 prometheus.yml,而是写 CRD:

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: my-app
  namespace: monitoring
spec:
  selector:
    matchLabels: {app: my-app}
  endpoints:
    - port: metrics
      interval: 15s

应用只要暴露 /metrics 并打好标签,监控自动跟上。

观测云对照

K8s 监控的另一条路:DataKit 以 DaemonSet 部署即可采集集群全量指标(主机、容器、K8s 对象状态),无需维护 Prometheus + Operator + Grafana 的组件矩阵;已有 kube-prometheus-stack 的资产也可以保留——DataKit 抓取其暴露的指标,数据进观测云统一存储与告警,本地只留轻量采集层,长期存储和高可用交给平台。

常见问题(FAQ)

Q:prometheus chart 和 kube-prometheus-stack 选哪个?
A:只想监控外部目标(把 K8s 当运行环境)→ 轻量的 prometheus chart;要监控 K8s 集群本身 + 应用 → kube-prometheus-stack。

Q:PVC 扩容后能直接改 size 吗?
A:取决于 StorageClass 是否支持在线扩容(allowVolumeExpansion: true)。不支持的话需要新建 PV 迁移数据。

Q:多集群怎么搞?
A:每集群跑本地 Prometheus,用 remote write 汇聚到中心(Thanos 或观测云这类平台),中心做全局视图与统一告警。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台