如何获取Kubernetes已挂载卷状态?Stackdriver及gcloud无相关信息
解决Kubernetes动态PVC挂载状态查询的几种简便方法
嘿,这个问题我之前帮不少人处理过——确实在GCP的原生工具里直接查看PVC挂载后的磁盘空间状态有点绕,不过除了手动登录节点,还有几个靠谱的替代方案:
直接通过kubectl exec查询Pod内挂载状态
既然PVC最终是挂载到具体Pod里的,完全不用登录节点,直接进入对应的Pod执行磁盘查询命令就行。步骤很简单:- 先找到挂载了目标PVC的Pod(可以用
kubectl get pods -n <命名空间> -o wide关联PVC信息) - 执行命令查看指定挂载路径的磁盘情况:
要是忘了挂载路径,用kubectl exec <Pod名称> -n <命名空间> -- df -h <PVC挂载路径>kubectl describe pod <Pod名称> -n <命名空间>,在VolumeMounts部分就能找到对应的路径。这个方法比登节点高效多了,不用管节点的位置和权限。
- 先找到挂载了目标PVC的Pod(可以用
用Kubelet原生指标获取卷状态
Kubernetes的kubelet组件本身就暴露了关于存储卷的监控指标,你可以直接通过API获取这些数据:kubectl get --raw /api/v1/nodes/<节点名称>/proxy/metrics | grep kubelet_volume_stats这里会返回类似
kubelet_volume_stats_used_bytes(已用空间)、kubelet_volume_stats_available_bytes(剩余空间)的指标,直接解析就能得到每个PVC的状态。如果需要批量查询所有节点的卷指标,可以写个简单的脚本遍历所有节点。搭建开源监控栈实现长期可视化监控
如果需要长期监控而非临时查询,推荐用Prometheus + Node Exporter + Grafana的组合:- Node Exporter会收集节点上所有挂载点的磁盘使用数据,包括PVC对应的持久化卷
- kube-state-metrics可以关联PVC、Pod和节点的关系,让你能精准定位到每个PVC的状态
- 最后在Grafana里导入现成的Kubernetes存储监控面板,就能直观看到所有PVC的已用/剩余空间,还能设置告警规则。
将卷指标导入Cloud Monitoring(原Stackdriver)
既然原生Cloud Monitoring没有这个指标,你可以通过GCP的Ops Agent来采集kubelet的卷指标并导入:- 在所有节点上安装Ops Agent
- 配置Agent采集kubelet的
/metrics端点,过滤出kubelet_volume_stats_*相关指标 - 之后就能在Cloud Monitoring的Metrics Explorer里搜索这些指标,创建自定义仪表盘或者告警规则,实现GCP控制台内的可视化监控。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

