2 min read | by Jordi Prats
On most kubectl command we will find the selector option for filtering pods based on it's labels. To use we just need to set the filter using the key=value format:
$ kubectl get pods -l "app=spin"
NAME READY STATUS RESTARTS AGE
spin-clouddriver-9899c9b54-nbjp6 1/1 Running 0 29h
spin-deck-56ff48c587-lc75g 1/1 Running 0 29h
spin-echo-7ccf545b48-b5n9l 1/1 Running 0 29h
spin-front50-59bff89745-2f65h 1/1 Running 0 29h
spin-gate-644c968b68-2q8nj 1/1 Running 0 29h
spin-igor-6669794575-2cnb4 1/1 Running 0 29h
spin-orca-795789b678-nqrk7 1/1 Running 0 29h
spin-rosco-6c9879b69f-gdrfl 1/1 Running 0 29h
The selector filter besides supporting equality by using '=' and '==', it also supports checking for inequality using the '!=' operator:
$ kubectl get pods -l "app!=spin"
NAME READY STATUS RESTARTS AGE
spinnaker-install-using-hal-qfctn 0/1 Completed 0 2d7h
spinnaker-minio-4d667764d7-qg7r4 1/1 Running 0 2d23h
spinnaker-minio-97cc55ccd7-ztvc6 0/1 Pending 0 29h
spinnaker-spinnaker-cleanup-using-hal-nzzcp 0/1 Completed 0 3d
spinnaker-spinnaker-halyard-0 1/1 Running 0 31h
We can also combine multiple lables like this:
$ kubectl get pods -l "app=spin,cluster=spin-clouddriver"
NAME READY STATUS RESTARTS AGE
spin-clouddriver-9899c9b54-nbjp6 1/1 Running 0 29h
One of the commands that also supports this selector is kubectl top: Using the right selector we can locate which Pod for a given application is using the most CPU:
$ kubectl top pod --selector app=spin --sort-by cpu
NAME CPU(cores) MEMORY(bytes)
spin-clouddriver-9899c9b54-nbjp6 327m 958Mi
spin-orca-795789b678-nqrk7 29m 420Mi
spin-front50-59bff89745-2f65h 6m 391Mi
spin-echo-7ccf545b48-b5n9l 5m 352Mi
spin-gate-644c968b68-2q8nj 4m 367Mi
spin-igor-6669794575-2cnb4 4m 336Mi
spin-rosco-6c9879b69f-gdrfl 2m 293Mi
spin-deck-56ff48c587-lc75g 1m 18Mi
Posted on 10/03/2021