K8s 集群监控:kube-prometheus-stack 部署,实现 Pod/Node/ 集群级指标监控
kube-prometheus-stack 是 Prometheus Operator 的集成方案,提供以下监控能力:核心组件:预置仪表板:修改添加自定义告警:
·
Kubernetes 集群监控:kube-prometheus-stack 部署指南
一、方案概述
kube-prometheus-stack 是 Prometheus Operator 的集成方案,提供以下监控能力:
- Pod 级监控:容器资源使用率、应用指标
- Node 级监控:节点 CPU/内存/磁盘/网络状态
- 集群级监控: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 / NodeKubernetes / KubeletKubernetes / 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%"
六、故障排查
- 指标缺失:检查 ServiceMonitor 是否匹配目标 Pod
spec: selector: matchLabels: app: my-app # 需与目标Pod标签一致 - 数据存储问题:检查 PVC 绑定状态
kubectl get pvc -n monitoring - 资源不足:调整 Prometheus 资源限制
prometheus: prometheusSpec: resources: requests: memory: 4Gi cpu: 1
通过此方案,可实现分钟级监控粒度,支持 10,000+ 指标采集,满足生产环境监控需求。部署完成后,建议通过
kubectl get servicemonitors -n monitoring验证监控目标覆盖状态。
更多推荐




所有评论(0)