-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathkubedu.sh
executable file
·19 lines (19 loc) · 1.02 KB
/
kubedu.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/bin/bash
kubectl get pods --all-namespaces -o json | jq -c '.items[] |
select(.spec.volumes[].persistentVolumeClaim.claimName != null ) |
del(.spec.volumes[] | select (.persistentVolumeClaim.claimName == null)) |
{
name: .metadata.name,
namespace: .metadata.namespace,
claimName: .spec.volumes[].persistentVolumeClaim.claimName,
volumeName: .spec.volumes[].name,
volumeMounts: .spec.containers[].volumeMounts[]
} |
select(.volumeName == .volumeMounts.name) ' | while IFS= read line; do
[ -z "$FIRST_LINE" ] && echo "NAMESPACE|CLAIMNAME|USAGE|MOUNTPATH|CAPACITY"
echo -n "$line" | jq -c -r '.namespace,"|",.claimName,"|"' | tr -d '\n';
kubectl exec $(echo "$line" | jq -r '.name') -n $(echo "$line" | jq -r '.namespace') -- du -h -d0 $(echo "$line" | jq -r '.volumeMounts.mountPath') | sed -e 's/\s\+/|/g' |tr -d '\n';
kubectl get pvc $(echo "$line" | jq -r '.claimName') -n $(echo "$line" | jq -r '.namespace') -o json | jq -r '"|",.status.capacity.storage' | tr -d '\n';
echo -e "\n"
FIRST_LINE="false"
done | column -s '|' -t