如何查找 GCP 永久磁盘使用情况?

How to find GCP Persistent Disk Usage?

我有一个与 GKE 集群中的 pod 关联的 GCP 永久磁盘。如何找到永久磁盘的磁盘使用情况?是否有任何 GCP 命令可以帮助我找到磁盘使用情况?

非常感谢您的回答。

您无法通过准备好的命令查看磁盘使用情况。但是,您可以通过 Stackdriver Monitoring(Google Cloud Operations Suite)使用名为 container/disk/bytes_used: documentation 的指标进行检查。如果需要自动化,可以使用监控 API。

请注意,您必须先在集群上启用 Stackdriver。如果还没有,请按照 documentation.

TL;DR

您可以使用利用率(已用百分比space)用于Pod的特定卷装载,具有以下指标:

  • kubernetes.io/pod/volume/utilization

描述指出:

The fraction of the volume that is currently being used by the instance. This value cannot be greater than 1 as usage cannot exceed the total available volume space.

您可以使用此指标来监控 Persistent Disk 支持的特定卷安装。

Disclaimer!

Please remember that this method requires some tailoring to suit specific use cases. I've included an example below. I've also added a monitoring api query to extract the same information.


使用 kubernetes.io/pod/volume/utilization 指标

假设您有一个 GKE 集群:

  • 3 个 PVCPD 支持,每个 space 个 100GB
  • 3 Pods 其中每个人都使用单个 PVC
    • ubuntu-ten - 已安装的 PVC
    • 上存储了 10GB
    • ubuntu-twenty - 挂载的 PVC
    • 上存储了 20GB
    • ubuntu-thirty - 安装的 PVC
    • 上存储了 30GB

您可以关注:

  • GCP Cloud Console (Web UI) -> Monitoring -> Metrics explorer


正在查询 API

正如另一个答案下的评论中所问:

Is there any examples for the monitoring API to retrieve the disk usage?

是的。您可以使用MQL(监控查询语言)查询监控API的数据。

您将需要从前面使用的示例中查询 (volume_utilization)。您可以通过进入 Query Editor(在最后一张图片上)来提取此类查询。

fetch k8s_pod
| metric 'kubernetes.io/pod/volume/utilization'
| filter
    (resource.cluster_name == 'CLUSTER_NAME'
     && resource.pod_name =~ 'ubuntu.*')
    && (metric.volume_name == 'volume-data')
| group_by 1m, [value_utilization_mean: mean(value.utilization)]
| every 1m

要查询 API,您可以使用 GCP 文档中提供的 Try this API 功能:

借助此工具创建的查询:

curl --request POST \
  'https://monitoring.googleapis.com/v3/projects/PROJECT-NAME/timeSeries:query?key=[YOUR_API_KEY]' \
  --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{"query":"fetch k8s_pod| metric '"'"'kubernetes.io/pod/volume/utilization'"'"'| filter(resource.cluster_name == '"'"'CLUSTER-NAME'"'"'&& resource.pod_name =~ '"'"'ubuntu.*'"'"')&& (metric.volume_name == '"'"'volume-data'"'"')| group_by 1m,[value_utilization_mean: mean(value.utilization)]| every 1m"}' \
  --compressed

在响应中,您应该获得有关 Pods 使用的卷的利用率的信息。


其他资源: