K8s集群PVC监控求助:缺失kubelet存储统计类指标
问题:Kubernetes PVC存储监控指标缺失及解决方案需求
环境与问题详情
- 集群部署:kubeadm本地部署K8s集群
- 监控栈:Prometheus + Grafana
- 采集配置:使用
kubernetes_sd_config,包含node、endpoints、pods、cadvisor等角色,可获取多数指标,但缺失kubelet_volume_stats_used_bytes、kubelet_volume_stats_capacity_bytes等PVC存储统计指标 - 需求:实现PVC数量、已用空间、使用率、剩余空间的监控
已参考内容:
- Stack Overflow PVC监控相关问题
- Grafana Kubernetes Persistent Volumes Usage仪表盘(ID:7685)
- node_exporter项目文档
版本信息
clientVersion: gitVersion: v1.27.3 goVersion: go1.20.5 serverVersion: gitVersion: v1.26.1 goVersion: go1.19.5
解决方案建议
1. 确认Kubelet存储指标采集配置
kubelet的kubelet_volume_stats_*指标由cadvisor模块暴露,需确保kubelet未禁用相关功能:
- 检查kubelet启动参数:确认包含
--enable-controller-attach-detach(默认开启),无--disable-cadvisor等禁用配置 - 查看kubelet配置文件(
/var/lib/kubelet/config.yaml):确保featureGates中未关闭VolumeStats相关特性 - 验证kubelet端点:在集群节点执行
curl -k https://localhost:10250/metrics/cadvisor,检查输出中是否包含目标指标;若没有,查看kubelet日志(kubectl logs -n kube-system kubelet-<节点名>)排查错误
2. 修正Prometheus采集配置
需单独添加针对kubelet cadvisor端点的采集任务,示例ConfigMap片段:
scrape_configs: - job_name: 'kubelet-volume-stats' kubernetes_sd_configs: - role: node scheme: https tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecure_skip_verify: true bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token relabel_configs: - source_labels: [__address__] regex: '(.*):10250' target_label: __address__ replacement: '${1}:10250' - action: labelmap regex: __meta_kubernetes_node_label_(.+) metric_relabel_configs: - action: keep regex: ^kubelet_volume_stats_.*
更新Prometheus ConfigMap后,执行kubectl rollout restart deployment prometheus -n <监控命名空间>重启Prometheus生效
3. 配置Grafana可视化
当指标成功采集后:
- 在Grafana中添加Prometheus数据源
- 导入仪表盘ID 7685(Kubernetes Persistent Volumes Usage)
- 根据集群实际情况调整变量配置,即可展示PVC数量、空间使用率等监控视图
4. 补充说明
- 若使用的存储类不支持VolumeStats(部分本地存储或第三方存储可能存在兼容性问题),需确认存储驱动是否实现了相关统计接口
- node_exporter主要采集节点级磁盘指标,无法直接获取PVC级别的存储统计,需依赖kubelet的cadvisor指标
内容的提问来源于stack exchange,提问作者mickey
相关产品推荐
相关产品推荐

