如何用 Helm 在 Kubernetes 上安装 Prometheus 和 Grafana?
用 kube-prometheus-stack 一条 Helm 命令即可在 K8s 上装齐 Prometheus + Grafana + Alertmanager + 常用 K8s 指标采集组件(不自动覆盖全部应用指标、日志或链路)。本文给出添加仓库、安装、自定义 values、访问 Grafana 的完整步骤。
社区标准做法是安装 kube-prometheus-stack 这个全家桶 Chart:Prometheus、Grafana、Alertmanager、node-exporter、kube-state-metrics 一次到位,还自带几十张 K8s 监控看板与告警规则。
安装步骤
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update
# 先按兼容性选定确切Chart版本,并设置 CHART_VERSION
helm install monitoring prometheus-community/kube-prometheus-stack --version "$CHART_VERSION" \
-n monitoring --create-namespace
访问 Grafana
# 取初始密码(用户 admin)
kubectl get secret -n monitoring monitoring-grafana -o jsonpath="{.data.admin-password}" | base64 -d
# 端口转发访问
kubectl port-forward -n monitoring svc/monitoring-grafana 3000:80
生产环境建议配 Ingress + HTTPS,并修改默认密码。
常用 values 定制
# values.yaml
prometheus:
prometheusSpec:
retention: 15d
storageSpec:
volumeClaimTemplate:
spec:
accessModes: ["ReadWriteOnce"]
resources: {requests: {storage: 50Gi}}
grafana:
# 通过已有 Secret 与对应 Chart 的 admin.existingSecret 配置管理密码
persistence: {enabled: true, size: 5Gi}
alertmanager:
config:
route: {receiver: 'discard'}
receivers:
- name: discard # 示例不发送通知,生产需替换为已配置并测试的接收器
首次安装时将 -f values.yaml 加到上述完整命令;已安装实例用同一 release、namespace 和已选版本执行 helm upgrade。存储类一定要先配——PVC 需要可用默认 StorageClass 或显式 storageClassName;示例未配置 Alertmanager 持久化。未启用持久化的组件可能在 Pod 重建后丢失本地数据。macOS 的 base64 解码参数通常为 -D,需按本机实现调整。
常见问题(FAQ)
Q:和 prometheus + grafana 两个独立 Chart 比哪个好? 全家桶默认配置经过打磨、组件版本兼容,新手与生产都推荐。
Q:升级 Chart 会丢配置吗? 保留 values 不保证升级安全;应核对 Chart/组件兼容性、CRD 迁移、废弃字段及 PVC/备份策略,按 release notes 在测试环境验证。