Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use Kubernetes fieldSelector to query ownerReferences

Does Kubernetes GET API actually support fieldSelector parameter to query values of array fields?

For example, I have a Pod like:

apiGroup: v1
kind: Pod
metadata:
  ownerReferences:
  - apiVersion: apps/v1
    blockOwnerDeletion: true
    controller: true
    kind: ReplicaSet
    name: grpc-ping-r7f8r-deployment-54d688d777
    uid: 262bab1a-1c79-11ea-8e23-42010a800016

Can I do something like:

kubectl get pods --field-selector 'metadata.ownerReferences.uid=262bab1a-1c79-11ea-8e23-42010a800016'

This command fails (field label not supported: metadata.ownerReferences.uid). I suspect the reason is that ownerReferences is an array field itself. I've also tried, but didn't work:

  • metadata.ownerReferences[*].uid=
  • metadata.ownerReferences[].uid=

I might try client-go SDK for Kubernetes API, but I suspect it won't work for the same reason.

Is there a server-side way to query by this? Thanks much.

like image 359
ahmet alp balkan Avatar asked Dec 11 '25 13:12

ahmet alp balkan


2 Answers

The --field-selector only works with some limited fields.

Which contains:

"metadata.name",
"metadata.namespace",
"spec.nodeName",
"spec.restartPolicy",
"spec.schedulerName",
"spec.serviceAccountName",
"status.phase",
"status.podIP",
"status.podIPs",
"status.nominatedNodeName"
  • Reference

But you can perform the task by using jq. Here is a command that I used for listing all ready nodes. It demonstrates the use of array fields that you're looking for.

$ kubectl get nodes -o json | jq -r '.items[] | select(.status.conditions[] | select(.type=="Ready" and .status=="True")) | .metadata.name '

master-0
node-1
node-3
like image 188
Kamol Hasan Avatar answered Dec 14 '25 04:12

Kamol Hasan


I think what you really want to do is a filter rather than a query. By using JSONPath you can filter out content using ?().

For example the following would work:

kubectl get pods -o jsonpath='{range .items[?(.metadata.ownerReferences.uid=262bab1a-1c79-11ea-8e23-42010a800016)]}{.metadata.name}{end}'
like image 35
Michael Taylor Avatar answered Dec 14 '25 04:12

Michael Taylor



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!