How to identify the storage space left in a persistent volume claim?

KubernetesGoogle Cloud-PlatformPersistent Volume-Claims

Kubernetes Problem Overview


I have a Kubernetes cluster on Google Cloud Platform. It has a persistent Volume Claim with a Capacity of 1GB. The persistent volume claim is bound to many deployments.

I would like to identify the space left in the persistent Volume Claim in order to know if 1GB is sufficient for my application.

I have used the command "kubectl get pv" but this does not show the storage space left.

Kubernetes Solutions


Solution 1 - Kubernetes

If there's a running pod with mounted PV from the PVC,

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

...will list all file systems, including the mounted volumes, and their free disk space.

Solution 2 - Kubernetes

You can monitorize them with kubelet prometheus metrics:

kubelet_volume_stats_available_bytes{persistentvolumeclaim="your-pvc"}
kubelet_volume_stats_capacity_bytes{persistentvolumeclaim="your-pvc"}

Solution 3 - Kubernetes

I wrote a script that lists all the PVCs in a cluster in a format similar to df.

You can run it via:

./kubedf

or:

./kubedf -h

for a human readable output.

Edit: The script no longer requires kubectl proxy to be running

Solution 4 - Kubernetes

Adding to @apisim's answer if you add -h parameter then you can get details in human readable format. Something like this,

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

enter image description here

Solution 5 - Kubernetes

If you are using 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

Press C to see number/count of files.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionilegolasView Question on Stackoverflow
Solution 1 - KubernetesapisimView Answer on Stackoverflow
Solution 2 - KubernetesChusView Answer on Stackoverflow
Solution 3 - KubernetesBrendan McGrathView Answer on Stackoverflow
Solution 4 - KubernetesnandeeshView Answer on Stackoverflow
Solution 5 - KubernetesqräbnöView Answer on Stackoverflow