Kubernetes 集群监控:kube-prometheus-stack 部署指南

一、方案概述

kube-prometheus-stack 是 Prometheus Operator 的集成方案,提供以下监控能力:

  1. Pod 级监控:容器资源使用率、应用指标
  2. Node 级监控:节点 CPU/内存/磁盘/网络状态
  3. 集群级监控:API Server、调度器、控制器状态

核心组件:

  • Prometheus(指标存储与告警)
  • Grafana(可视化仪表盘)
  • Alertmanager(告警管理)
  • Node Exporter(节点指标采集)
  • Kube-State-Metrics(集群资源状态)
二、部署步骤(Helm 3)
1. 添加 Helm 仓库
helm repo add prometheus-community https://prometheus-community.github.io/helm-charts
helm repo update

2. 创建自定义配置文件 values.yaml
grafana:
  enabled: true
  adminPassword: "grafana-admin"  # 修改密码
  
prometheus:
  prometheusSpec:
    storageSpec: 
      volumeClaimTemplate:
        spec:
          storageClassName: standard
          resources:
            requests:
              storage: 50Gi  # 按需调整存储大小

alertmanager:
  enabled: true

3. 安装 Stack
helm install kube-prom-stack prometheus-community/kube-prometheus-stack \
  -f values.yaml \
  -n monitoring --create-namespace

4. 验证部署
kubectl get pods -n monitoring
# 预期输出
# prometheus-kube-prom-stack-prometheus-0   3/3   Running
# grafana-kube-prom-stack-7f9d6c98d8-abcde   2/2   Running

三、监控数据访问
1. Prometheus UI
kubectl port-forward svc/kube-prom-stack-prometheus 9090 -n monitoring
# 访问 http://localhost:9090

  • Pod 指标kube_pod_container_resource_requests{resource="cpu"}
  • Node 指标node_memory_MemFree_bytes
  • 集群指标kubelet_pleg_relist_duration_seconds
2. Grafana 仪表板
kubectl port-forward svc/kube-prom-stack-grafana 3000:80 -n monitoring
# 访问 http://localhost:3000 (用户名:admin, 密码:grafana-admin)

预置仪表板:

  • Kubernetes / Compute Resources / Node
  • Kubernetes / Kubelet
  • Kubernetes / API Server
四、监控层级实现原理
监控层级 数据来源 关键指标
Pod cAdvisor container_cpu_usage_seconds<br>container_memory_working_set_bytes
Node Node Exporter node_cpu_seconds_total<br>node_filesystem_avail_bytes
集群 Kube-State-Metrics kube_node_status_condition<br>kube_pod_status_phase
五、告警配置示例

修改 values.yaml 添加自定义告警:

prometheus:
  prometheusSpec:
    ruleSelector:
      matchLabels:
        role: alert-rules
    additionalRule:
      - name: node-alerts
        rules:
        - alert: NodeHighCPU
          expr: sum(rate(node_cpu_seconds_total{mode="idle"}[5m])) by (node) < 0.2
          for: 10m
          labels:
            severity: critical
          annotations:
            summary: "{{ $labels.node }} CPU 使用率超 80%"

六、故障排查
  1. 指标缺失:检查 ServiceMonitor 是否匹配目标 Pod
    spec:
      selector:
        matchLabels:
          app: my-app  # 需与目标Pod标签一致
    

  2. 数据存储问题:检查 PVC 绑定状态
    kubectl get pvc -n monitoring
    

  3. 资源不足:调整 Prometheus 资源限制
    prometheus:
      prometheusSpec:
        resources:
          requests:
            memory: 4Gi
            cpu: 1
    

通过此方案,可实现分钟级监控粒度,支持 10,000+ 指标采集,满足生产环境监控需求。部署完成后,建议通过 kubectl get servicemonitors -n monitoring 验证监控目标覆盖状态。

Logo

电影级数字人,免显卡端渲染SDK,十行代码即可调用,工业级demo免费开源下载!

更多推荐