1. 安装 Helm 客户端

在 Linux 服务器上执行以下命令:

# 下载二进制包
curl -LO https://get.helm.sh/helm-v4.1.1-linux-amd64.tar.gz

# 解压
tar -zxvf helm-v4.1.1-linux-amd64.tar.gz

# 移动至系统路径
sudo mv linux-amd64/helm /usr/local/bin/helm

# 验证安装
helm version

2. 准备 Chart 包

  1. 访问官方 GitHub Release 页面:
    👉 https://github.com/prometheus-community/helm-charts/releases

  2. 寻找以 kube-prometheus-stack- 开头的 .tgz 文件(例如 kube-prometheus-stack-64.5.0.tgz)。

    注意:不要下载源码包,要下载 Chart 包。

  3. 下载并上传到服务器 /root 目录,然后解压:

    tar -zxvf kube-prometheus-stack-*.tgz
    cd kube-prometheus-stack-*
    

3. 配置自定义参数 (my-config.yaml)

在当前目录下创建 my-config.yaml 文件。所有镜像地址已统一修改为 harbor.sunlipeng.org

⚠️ 重要提示

  1. 请确保 harbor.sunlipeng.org 仓库中已存在以下镜像且标签版本与 Chart 默认版本一致。
  2. 如果仓库中版本不同,请在下方配置中手动调整 tag 版本号。
  3. 副本数已设置为 1 以避免 ReadWriteOnce 存储模式的挂载冲突。如需多副本,请确保存储支持 ReadWriteMany
vim my-config.yaml

粘贴以下内容:

# ================= 1. Grafana 配置 =================
grafana:
  adminPassword: "123456"  # 登录密码
  
  # --- 镜像配置 ---
  image:
    repository: harbor.sunlipeng.org/grafana/grafana
    # tag 留空则使用 Chart 默认版本,如需指定请取消注释并修改
    # tag: "10.0.0" 
    pullPolicy: IfNotPresent

  # --- Ingress 配置 ---
  ingress:
    enabled: true
    ingressClassName: "nginx"
    hosts:
      - "grafana.example.com"

# ================= 2. Prometheus 配置 =================
prometheus:
  prometheusSpec:
    # --- 副本数 (建议先设为 1,避免存储冲突) ---
    replicas: 1
    
    # --- 镜像配置 ---
    image:
      repository: harbor.sunlipeng.org/prometheus/prometheus
      # tag: "v2.50.0"
      pullPolicy: IfNotPresent
      
    # --- PVC 存储配置 ---
    storageSpec:
      volumeClaimTemplate:
        spec:
          storageClassName: "longhorn"  # 请确认集群中有此 StorageClass
          accessModes: ["ReadWriteOnce"]
          resources:
            requests:
              storage: 10Gi

    # --- 资源限制 ---
    resources:
      limits:
        memory: 1Gi
        cpu: 500m

  # Prometheus Config Reloader 镜像
  prometheusConfigReloader:
    image:
      repository: harbor.sunlipeng.org/quay.io/prometheus-operator/prometheus-config-reloader
      pullPolicy: IfNotPresent

# ================= 3. Alertmanager 配置 =================
alertmanager:
  enabled: true
  alertmanagerSpec:
    replicas: 1
    
    # --- 镜像配置 ---
    image:
      repository: harbor.sunlipeng.org/prometheus/alertmanager
      # tag: "v0.26.0"
      pullPolicy: IfNotPresent
  
  ingress:
    enabled: true
    ingressClassName: "nginx"
    hosts:
      - "alert.example.com"

# ================= 4. Kube State Metrics 配置 =================
kube-state-metrics:
  # --- 镜像配置 ---
  image:
    repository: harbor.sunlipeng.org/registry.k8s.io/kube-state-metrics/kube-state-metrics
    # tag: "v2.18.0" # 请确保 Harbor 中有此版本
    pullPolicy: IfNotPresent
  
  resources:
    requests:
      memory: 64Mi
      cpu: 50m
    limits:
      memory: 128Mi
      cpu: 100m

# ================= 5. Node Exporter 配置 =================
prometheus-node-exporter:
  enabled: true
  image:
    repository: harbor.sunlipeng.org/quay.io/prometheus/node-exporter
    pullPolicy: IfNotPresent

# ================= 6. Operator 配置 =================
prometheusOperator:
  image:
    repository: harbor.sunlipeng.org/quay.io/prometheus-operator/prometheus-operator
    pullPolicy: IfNotPresent

4. 执行安装

my-config.yaml 所在目录下执行:

helm install my-monitoring . \
  --namespace monitoring \
  -f my-config.yaml \
  --create-namespace \
  --timeout 10m

5. 验证与访问

5.1 检查状态

等待 2-5 分钟,执行以下命令检查资源:

# 查看 Pod 状态 (应全部为 Running)
kubectl get pods -n monitoring

# 查看 PVC 绑定状态 (应为 Bound)
kubectl get pvc -n monitoring

# 查看 Ingress 地址
kubectl get ingress -n monitoring

5.2 访问服务

方式一:通过 Ingress (需配置 DNS 或 Hosts)

  1. 获取 Ingress IP:kubectl get ingress -n monitoring
  2. 在本机 hosts 文件添加解析:
    <Ingress-IP> grafana.example.com
    <Ingress-IP> alert.example.com
    
  3. 浏览器访问:
    • Grafana: http://grafana.example.com (用户: admin, 密码: 123456)
    • Alertmanager: http://alert.example.com

6. 常用维护命令

升级配置 (修改 my-config.yaml 后):

helm upgrade my-monitoring . --namespace monitoring -f my-config.yaml

卸载:

helm uninstall my-monitoring -n monitoring
kubectl delete namespace monitoring

查看 Release 状态:

helm list -n monitoring
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐