How to identify the storage space left in a persistent volume claim?
KubernetesGoogle Cloud-PlatformPersistent Volume-ClaimsKubernetes 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
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.