Kubernetes 中用 Helm 安装 Prometheus 时怎么自定义 values 配置?

文章导读
在 Kubernetes 中用 Helm 安装 Prometheus 时,最推荐的自定义方式是基于官方 Chart 默认配置生成 values 文件,修改关键参数后通过 -f 标志传入安装命令。
📋 目录
  1. 命令速用版
  2. 为什么会这样
  3. 分步处理
  4. 怎么验证是否生效
  5. 常见坑
  6. 参考来源
A A

在 Kubernetes 中用 Helm 安装 Prometheus 时,最推荐的自定义方式是基于官方 Chart 默认配置生成 values 文件,修改关键参数后通过 -f 标志传入安装命令。

先说结论:不要直接修改 Chart 包内部文件,而是通过本地 values 文件覆盖默认配置,既方便版本升级又能保留个性化设置。

  • 适合:需要调整存储大小、资源限制或服务暴露方式的场景
  • 先准备:确认集群 StorageClass 可用,规划好命名空间和资源配额
  • 验收:检查 Pod 状态、PVC 绑定情况及 Service 端口连通性

命令速用版

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

# 2. 获取默认配置参考(仅用于查阅,不建议直接作为安装文件)
helm show values prometheus-community/kube-prometheus-stack > default-values.yaml

# 3. 创建最小化 custom-values.yaml 后执行安装
helm install prometheus prometheus-community/kube-prometheus-stack \
  `--namespace` monitoring \
  `--create-namespace` \
  -f custom-values.yaml

为什么会这样

Helm Chart 本质上是一组带默认值的 Kubernetes 资源模板。官方提供的默认配置通常为了通用性,存储大小、资源限制或服务类型可能不符合实际生产需求。直接修改 Chart 源码会导致升级困难,而通过 values 文件覆盖配置,既能保留自定义项,又能在 Chart 版本更新时平滑迁移。此外,Prometheus 监控数据量增长快,默认的临时存储重启后会丢失,必须通过 values 文件配置持久化存储。

分步处理

步骤 1:确认环境前提
确保集群已安装 Helm 3.0+ 版本,且有权限创建命名空间和 PVC。如果集群版本较新,建议使用 Helm v3.12.0 或更高版本,以避免潜在的 HTTP/2 兼容性问题。

Kubernetes 中用 Helm 安装 Prometheus 时怎么自定义 values 配置?

步骤 2:生成并精简配置文件
使用 helm show values 导出默认配置仅作为参考。在创建 custom-values.yaml 时,建议仅保留修改项,删除未改动的默认配置。这样可以减少文件体积,便于后续维护对比,避免默认值变更导致意外覆盖。

# custom-values.yaml 片段示例(仅包含覆盖项)
prometheus:
  prometheusSpec:
    # 配置持久化存储
    storageSpec:
      volumeClaimTemplate:
        spec:
          storageClassName: "standard"  # 替换为集群实际的 StorageClass
          accessModes: ["ReadWriteOnce"]
          resources:
            requests:
              storage: 50Gi             # 根据监控规模调整
    # 设置资源限制
    resources:
      limits:
        cpu: "2"
        memory: "4Gi"
      requests:
        cpu: "1"
        memory: "2Gi"
    # 数据保留时间
    retention: 15d

grafana:
  enabled: true
  adminPassword: "your-strong-password" # 务必修改默认密码
  persistence:
    enabled: true
    size: 10Gi

步骤 3:执行部署
运行安装命令时指定 `--create-namespace` 自动创建命名空间。如果是更新现有配置,将 install 改为 upgrade

怎么验证是否生效

1. 检查 Pod 状态
执行 kubectl get pods -n monitoring,确认 prometheus、alertmanager、grafana 相关 Pod 均为 Running 状态。

Kubernetes 中用 Helm 安装 Prometheus 时怎么自定义 values 配置?

2. 验证持久化存储
执行 kubectl get pvc -n monitoring,查看 PVC 状态是否为 Bound,且容量与配置一致。

3. 测试服务访问
如果是 NodePort 类型,检查节点端口是否开放;如果是 LoadBalancer,检查外部 IP 是否分配。尝试访问 Grafana 页面确认数据源已自动配置。

常见坑

1. StorageClass 不存在
配置中指定的 storageClassName 必须在集群中存在,否则 PVC 会一直 Pending。执行 kubectl get storageclass 提前确认。

Kubernetes 中用 Helm 安装 Prometheus 时怎么自定义 values 配置?

2. 资源限制过低
Prometheus 内存不足会导致 OOMKilled。建议初始设置内存限制为 2Gi,若出现 OOM 则按 50% 递增调整,或根据每 1000 个监控目标增加 500Mi 内存估算。

3. Helm 版本兼容
部分旧版本 Helm 拉取仓库时可能遇到协议错误,如遇 PROTOCOL_ERROR,建议升级 Helm 客户端版本。

4. 默认密码风险
Grafana 默认账号密码通常为 admin/prom-operator 或类似弱口令,必须在 values 文件中显式指定强密码。

参考来源