简体   繁体   English

如何使用kubectl的字段选择器按任意字段进行搜索?

[英]How to search by arbitrary fields using field selector with kubectl?

In this doc supported fields are not listed and I cannot find them properly. 在此doc文档中未列出支持的字段,我无法正确找到它们。 With some trial and experiments I noticed the following: 通过一些试验和实验,我注意到以下几点:

This works nicely and finds some pods: 这很好用,并找到一些pods:

kubectl get pods --field-selector=spec.restartPolicy=Never

But this produces error: 但这会产生错误:

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

So how is this decided? 那怎么决定呢? I know I can find with JSONPath but it is client-side filtering AFAIK. 我知道我可以找到JSONPath,但它是客户端过滤AFAIK。

You can select the serviceAccount using following query: 您可以使用以下查询选择serviceAccount

kubectl get pods --field-selector=spec.serviceAccountName="default"

The --field-selector currently selects only equality based values and in that too it has very limited support to select the pod based on fields. --field-selector目前仅选择基于相等的值,并且它对基于字段选择pod的支持非常有限。 The following fields are supported by --field-selector : --field-selector支持以下字段:

metadata.name
metadata.namespace
spec.nodeName
spec.restartPolicy
spec.schedulerName
spec.serviceAccountName
status.phase
status.podIP
status.nominatedNodeName

As you already know, you need to rely on the jsonpath to select any other field other than above fields. 如您所知,您需要依赖jsonpath来选择除上述字段之外的任何其他字段。

You can visit following link to find out more: 您可以访问以下链接以了解更多信息:

https://github.com/kubernetes/kubernetes/blob/master/pkg/apis/core/v1/conversion.go#L160-L167] 1 https://github.com/kubernetes/kubernetes/blob/master/pkg/apis/core/v1/conversion.go#L160-L167] 1

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM