40
votes

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.

5
What type of PV is it? - Rico
The storageClassName is networkvolume if that is what you are referring to - ilegolas
Is it NFS? or something else? - Rico
It is not NFS. It is a persistent volume claim - ilegolas
A PV has a type: link. That's what @Rico is asking. - OneK

5 Answers

48
votes

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.

14
votes

You can monitorize them with kubelet prometheus metrics:

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

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

It requires kubectl proxy to be running.

You can run it via:

./kubedf

or:

./kubedf -h

for a human readable output.

5
votes

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

0
votes

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.