有没有一种有效的方法来检查 Kubernetes 中 PV/PVC 的使用情况

Is there an efficient way to check the usage for PV/PVC in Kubernetes

例如,我有 50 Gib PV/PVC 并授予一个 Pod,我只想检查存储的使用情况

我正在遵循的方法是设置一个 busybox pod 并安装相同的 PVC,然后执行到 busybox 以运行 df -h 检查存储。

我只是想知道是否有一种有效的方法来做同样的事情。

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

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

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

或者更难的方法是,您可以编写一个操作符来监视包装 PVC 的 CRD 并显示 PVC 的使用情况。

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

df-pv 插件

它在命名空间或集群中的所有 pv 中完全满足您的要求。安装完成后,只需 运行 kubectl df-pv 即可。

您可以尝试下面的命令集,我检查了 AKS,发现它工作正常。

kubectl get pods -n namespace1

选择 pod_name 当前正在使用或映射到 PV/PVC(持久卷声明),因为我使用了 PV 上的挂载目录,因此我使用 /mount 检查其详细信息并替换{pod_name} 实际 pod_name.

kubectl exec -it {pod_name} -n namespace1 bash

df -h

ls -l /mount