Field selectors let you select Kubernetes resources based on the value of one or more resource fields. Here are some example field selector queries:
metadata.name=my-servicemetadata.namespace!=defaultstatus.phase=PendingThis kubectl command selects all Pods for which the value of the status.phase field is Running:
$ kubectl get pods --field-selector status.phase=RunningField selectors are essentially resource filters. By default, no selectors/filters are applied, meaning that all resources of the specified type are selected. This makes the following
kubectlqueries equivalent:$ kubectl get pods $ kubectl get pods --field-selector ""
Supported field selectors vary by Kubernetes resource type. All resource types support the metadata.name and metadata.namespace fields. Using unsupported field selectors produces an error. For example:
$ kubectl get ingress --field-selector foo.bar=baz
Error from server (BadRequest): Unable to find "ingresses" that match label selector "", field selector "foo.bar=baz": "foo.bar" is not a known field selector: only "metadata.name", "metadata.namespace"You can use the =, ==, and != operators with field selectors (= and == mean the same thing). This kubectl command, for example, selects all Kubernetes Services that aren’t in the default namespace:
$ kubectl get services --field-selector metadata.namespace!=defaultAs with label and other selectors, field selectors can be chained together as a comma-separated list. This kubectl command selects all Pods for which the status.phase does not equal Running and the spec.restartPolicy field equals Always:
$ kubectl get pods --field-selector=status.phase!=Running,spec.restartPolicy=AlwaysYou use field selectors across multiple resource types. This kubectl command selects all Statefulsets and Services that are not in the default namespace:
$ kubectl get statefulsets,services --field-selector metadata.namespace!=default