3 min read | by Jordi Prats
kubectl get has an option to be able to sort it's output by any numeric or string field using it's JSON path. Let's take a look on how to do so:
We can use the PersistentVolume objects as an example:
$ kubectl get pv NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE audit-logs 2Gi RWO Retain Available manual 122m pv0002 1Gi RWO Retain Available manual 122m pv0003 3Gi RWO Retain Available manual 122m
To be able to sort it's output we must take a look at it's yaml definition in order to get it's path. For a PersistentVolume we can see that this would be .spec.capacity.storage:
$ kubectl get pv pvc-13901610-49f0-4fcf-b674-a3bc1d5e378c -o yaml | grep -E "storage: [0-9]" -B4 spec: accessModes: - ReadWriteOnce capacity: storage: 8Gi
Executing the same command with the --sort-by option and this path we will get the volumes sorted by size:
$ kubectl get pv --sort-by=.spec.capacity.storage NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE pv0002 1Gi RWO Retain Available manual 122m audit-logs 2Gi RWO Retain Available manual 122m pv0003 3Gi RWO Retain Available manual 122m
For sorting the pods by it's restart count it's a little more tricky:
$ kubectl get pods --sort-by='.status.containerStatuses[0].restartCount' -A NAMESPACE NAME READY STATUS RESTARTS AGE kube-system ingress-nginx-admission-create-hjck6 0/1 Completed 0 53m jenkins default-ffcjr 0/1 Error 0 31h kube-system ingress-nginx-controller-558664778f-t64dl 1/1 Running 0 53m kube-system ingress-nginx-admission-patch-f5dc5 0/1 Completed 0 53m jenkins default-3x1fk 0/1 Error 0 26h jenkins jenkins-0 2/2 Running 23 20d kube-system kube-scheduler-minikube 1/1 Running 11 23d kube-system coredns-f9fd979d6-g2bp8 1/1 Running 11 23d kube-system kube-proxy-6khw8 1/1 Running 11 23d kube-system etcd-minikube 1/1 Running 12 23d kube-system kube-apiserver-minikube 1/1 Running 16 23d kube-system metrics-server-d9b576748-57k42 1/1 Running 16 23d kube-system kube-controller-manager-minikube 1/1 Running 18 23d kube-system storage-provisioner 1/1 Running 30 23d
Right now, there's no way of sorting it in descending order, but tac always comes handy:
$ kubectl get pods --sort-by='.status.containerStatuses[0].restartCount' -A | tac kube-system storage-provisioner 1/1 Running 30 23d kube-system kube-controller-manager-minikube 1/1 Running 18 23d kube-system metrics-server-d9b576748-57k42 1/1 Running 16 23d kube-system kube-apiserver-minikube 1/1 Running 16 23d kube-system etcd-minikube 1/1 Running 12 23d kube-system kube-proxy-6khw8 1/1 Running 11 23d kube-system coredns-f9fd979d6-g2bp8 1/1 Running 11 23d kube-system kube-scheduler-minikube 1/1 Running 11 23d jenkins jenkins-0 2/2 Running 23 20d jenkins default-3x1fk 0/1 Error 0 26h kube-system ingress-nginx-admission-patch-f5dc5 0/1 Completed 0 61m kube-system ingress-nginx-controller-558664778f-t64dl 1/1 Running 0 61m jenkins default-ffcjr 0/1 Error 0 31h kube-system ingress-nginx-admission-create-hjck6 0/1 Completed 0 61m NAMESPACE NAME READY STATUS RESTARTS AGE
Posted on 31/12/2020