Publié le: 2022-09-07

Retrouver tous les volumes utilisés par des pods Kubernetes

Petit article en mode feuille de brouillon afin de pouvoir facilement lister tous les volumes d’un type utilisé dans un cluster Kubernetes.

Premier exemple, retrouver tous les flexVolumes utilisés par le flexVolume NFS:

kubectl get pod -A -o json | jq  -r '.items[].spec.volumes[]? | select(.flexVolume.options.share != null) .flexVolume.options.share' | sort -u

La même chose mais pour des flexVolumes CIFS:

kubectl get pod -A -o json | jq  -r '.items[].spec.volumes[]? | select(.flexVolume.options.networkPath != null) .flexVolume.options.networkPath' | sort -u

Retrouvons maintenant toutes les configMap montées:

kubectl get pod -A -o json | jq  -r '.items[].spec.volumes[]? | select(.configMap.name != null) .configMap.name' | sort -u

Ou encore tous les secrets:

kubectl get pod -A -o json | jq  -r '.items[].spec.volumes[]? | select(.secret.secretName != null) .secret.secretName' | sort -u

On peut également retrouver tous les chemins montés depuis l’hôte:

kubectl get pod -A -o json | jq  -r '.items[].spec.volumes[]? | select(.hostPath.path != null) .hostPath.path' | sort -u

Et enfin tous les PersistentVolumeClaims (PVC):

kubectl get pod -A -o json | jq  -r '.items[].spec.volumes[]? | select(.persistentVolumeClaim.claimName != null) | .persistentVolumeClaim.claimName'| sort -u