在Kubernetes中,检查PV/PVC的使用情况是否有高效的方法?

27
例如,我有50 Gib PV/PVC并授予一个Pod,我只想检查存储的使用情况。 我所遵循的方法是设置一个挂载了相同PVC的busybox pod,然后执行 df -h 命令以检查存储空间。 我想知道是否有更有效的方法来完成相同的任务。
4个回答

26

根据您需要执行此操作的频率,您可能需要查看 kubectldf-pv 插件(https://github.com/yashbhutwala/kubectl-df-pv)

该插件可以在命名空间或集群中跨所有pv执行您所要求的操作。安装完成后,只需运行kubectl df-pv即可。


7

很遗憾,我们目前没有这个功能。我经常会在 Prometheus 上查询 kubelet_volume_stats_used_bytes 指标来获取信息(因为我在那里有一个 Prom 集群)。

或者稍微麻烦一些的方法是编写一个操作器来监听包装 PVC 的 CRD,并显示 PVC 的使用情况。


2

有许多类型的PV(例如各种云存储)。它们中的每一个可能都有不同的获取信息方式。您可以始终使用kubectl describe pv <pv-name>kubectl get pv <pv-name> -o yaml。这可能会给您一些有关PV当前状态的信息,但它可能缺少您需要的信息。

我假设您正在使用本地PV。在这种情况下,您运行容器内的df -h命令的解决方案还不错。另一件事是直接在托管PV的节点上运行此命令。


1
谢谢您的回复,实际上描述中没有使用存储。我没有使用本地 PV,而是使用 Azure 存储。由于 Busybox 是基于 Linux 的,所以根据我的了解,df -h 命令可以检查 Busybox 中的挂载文件夹。 - Vampire_D
您还可以在Azure中监视您的存储帐户:https://azure.microsoft.com/zh-cn/documentation/articles/storage-monitor-storage-account/. - Dávid Molnár
是的,你说得没错。但是公司我所在的 PaaS 在 Azure 上对 DevOps 不可见,所以我只是在寻找在 Kubernetes 上的解决方案。 - Vampire_D

1

您可以尝试以下命令集,在 AKS 上测试并发现其正常工作。

kubectl get pods -n namespace1

选择当前正在使用或映射到 PV/PVC(持久卷索赔)的 pod_name,并且由于我在 PV 上使用了挂载目录,因此我使用 /mount 来检查其详细信息,将 {pod_name} 替换为实际的 pod_name。
kubectl exec -it {pod_name} -n namespace1 bash

df -h

ls -l /mount

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接