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

问题描述 投票:3回答:1

在这个doc支持的字段没有列出,我找不到它们。通过一些试验和实验,我注意到以下几点:

这很好用,并找到一些pods:

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

但这会产生错误:

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

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

linux shell docker kubernetes kubectl
1个回答
2
投票

您可以使用以下查询选择serviceAccount

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

--field-selector目前仅选择基于相等的值,并且它对基于字段选择pod的支持非常有限。 --field-selector支持以下字段:

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

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.