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