如何识别持久卷声明中剩余的存储空间?

Posted

技术标签:

【中文标题】如何识别持久卷声明中剩余的存储空间?【英文标题】:How to identify the storage space left in a persistent volume claim? 【发布时间】:2019-04-11 13:17:11 【问题描述】:

我在 Google Cloud Platform 上有一个 Kubernetes 集群。它具有容量为 1GB 的持久卷声明。持久卷声明绑定到许多部署。

我想确定持久卷声明中剩余的空间,以了解 1GB 是否足以满足我的应用程序。

我已经使用了命令“kubectl get pv”,但这并没有显示剩余的存储空间。

【问题讨论】:

这是什么类型的光伏? 如果你指的是 storageClassName 是 networkvolume 是 NFS 吗?还是别的什么? 它不是 NFS。这是一个持久的卷声明 一个 PV 有一个类型:link。这就是@Rico 的要求。 【参考方案1】:

如果有一个正在运行的 pod 已安装来自 PVC 的 PV,

kubectl -n <namespace> exec <pod-name> df

...将列出所有文件系统,包括已安装的卷及其可用磁盘空间。

【讨论】:

仅供参考 - 如果容器没有安装 df 命令(就像许多产品容器一样),这将不起作用。还有其他方法吗? kubectl exec -- df -h【参考方案2】:

您可以使用 kubelet prometheus 指标监控它们:

kubelet_volume_stats_available_bytespersistentvolumeclaim="your-pvc"
kubelet_volume_stats_capacity_bytespersistentvolumeclaim="your-pvc"

【讨论】:

不幸的是,截至今天,它不适用于 GP3 卷:/ 请参阅 github.com/kubernetes-sigs/aws-ebs-csi-driver/issues/816 'kubelet_volume_stats_used_bytes' 见***.com/a/47117776/1747983【参考方案3】:

如果您添加 -h 参数,则添加到@apisim 的答案,然后您可以获得人类可读格式的详细信息。像这样的,

kubectl -n <namespace> exec <pod-name> -- df -h

【讨论】:

查看伪文件系统应该是df -ah【参考方案4】:

我写了一个script,它以类似于df的格式列出了集群中的所有PVC。

您可以通过以下方式运行它:

./kubedf

或:

./kubedf -h

用于人类可读的输出。

编辑:脚本不再需要 kubectl proxy 来运行

【讨论】:

【参考方案5】:

如果您使用的是 NFS:

sudo apt update
sudo apt install ncdu
cd /your_nfs/kubernetes/
sudo ncdu .
ncdu 1.12 ~ Use the arrow keys to navigate, press ? for help
--- /your_nfs/kubernetes/ ----------------------------------------------------------------------------------
   34.1 GiB [##########] /backups
    2.1 GiB [          ] /redis
    1.9 GiB [          ] /XXX
  785.5 MiB [          ] /postgresql
  435.7 MiB [          ] /XXX
  391.2 MiB [          ] /XXX

C 查看文件数量/数量。

【讨论】:

以上是关于如何识别持久卷声明中剩余的存储空间?的主要内容,如果未能解决你的问题,请参考以下文章

非DFS使用空间

k8sk8s存储之持久卷(pv)持久卷声明(pvc)nfs持久化存储示例

k8sk8s存储之持久卷(pv)持久卷声明(pvc)nfs持久化存储示例

LVM逻辑卷管理

如何查找 Android 上剩余的可用存储空间(磁盘空间)? [复制]

10最为主流的三个存储卷 emptyDirhostPathnfs