<p>In this <a href="https://kubernetes.io/docs/concepts/overview/working-with-objects/field-selectors/#supported-fields" rel="noreferrer">doc</a> supported fields are not listed and I cannot find them properly. With some trial and experiments I noticed the following: </p>

<p>This works nicely and finds some pods:</p>

<pre><code>kubectl get pods --field-selector=spec.restartPolicy=Never
</code></pre>

<p>But this produces error:</p>

<pre><code>kubectl get pods --field-selector=spec.serviceAccount=default

No resources found.
Error from server (BadRequest): Unable to find {"" "v1" "pods"} that match label selector "", field selector "spec.serviceAccount=default": field label not supported: spec.serviceAccount
</code></pre>

<p>So how is this decided? I know I can find with JSONPath but it is client-side filtering AFAIK. </p>

<p>You can select the <code>serviceAccount</code> using following query:</p>

<pre><code>kubectl get pods --field-selector=spec.serviceAccountName="default"
</code></pre>

<p>The <code>--field-selector</code> currently selects only equality based values and in that too it has very limited support to select the pod based on fields. The following fields are supported by <code>--field-selector</code>:</p>

<pre><code>metadata.name
metadata.namespace
spec.nodeName
spec.restartPolicy
spec.schedulerName
spec.serviceAccountName
status.phase
status.podIP
status.nominatedNodeName
</code></pre>

<p>As you already know, you need to rely on the jsonpath to select any other field other than above fields.</p>

<p>You can visit following link to find out more:</p>

<blockquote>
  <p><a href="https://github.com/kubernetes/kubernetes/blob/master/pkg/apis/core/v1/conversion.go#L160-L167]" rel="nofollow noreferrer">https://github.com/kubernetes/kubernetes/blob/master/pkg/apis/core/v1/conversion.go#L160-L167]</a><a href="https://github.com/kubernetes/kubernetes/blob/master/pkg/apis/core/v1/conversion.go#L160-L167" rel="nofollow noreferrer">1</a></p>
</blockquote>
