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

Mus*_*afa 5 linux shell docker kubernetes kubectl

在此文档中,未列出受支持的字段,我无法正确找到它们。通过一些试验和实验,我注意到了以下几点:

这可以很好地工作并找到一些豆荚:

kubectl get pods --field-selector=spec.restartPolicy=Never
Run Code Online (Sandbox Code Playgroud)

但这会产生错误:

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
Run Code Online (Sandbox Code Playgroud)

那么如何决定呢?我知道我可以使用JSONPath找到它,但它是客户端过滤AFAIK。

Pra*_*dha 4

您可以serviceAccount使用以下查询进行选择:

kubectl get pods --field-selector=spec.serviceAccountName="default"
Run Code Online (Sandbox Code Playgroud)

当前仅选择--field-selector基于相等的值,因此它对基于字段选择 pod 的支持也非常有限。支持以下字段--field-selector

metadata.name
metadata.namespace
spec.nodeName
spec.restartPolicy
spec.schedulerName
spec.serviceAccountName
status.phase
status.podIP
status.nominatedNodeName
Run Code Online (Sandbox Code Playgroud)

如您所知,您需要依赖 jsonpath 来选择除上述字段之外的任何其他字段。

您可以访问以下链接了解更多信息:

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