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

标签 linux shell docker kubernetes kubectl

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

这很好用并找到了一些 pod:

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。

最佳答案

您可以使用以下查询选择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

关于linux - 如何使用带有 kubectl 的字段选择器按任意字段进行搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55650540/

相关文章:

linux - 如何清理 Linux 内核使用的缓存

bash - shell脚本换桌面壁纸

amazon-web-services - 运行任务 : No Container Instances were found in your cluster 时出现 AWS ECS 错误

python - 每次测试后如何重置 Django 测试数据库 ID?

amazon-web-services - 有没有办法将普通的AWS Lambda函数容器化?

docker - k8s securityContext.runAsUser与Dockerfile USER指令

c - 如何将函数符号映射到地址范围

linux - Debian Linux 的 GUI SVN 客户端

linux - 在 redhat linux 上安装 docker - 出现 'container-selinux' 和 'selinux-policy' 问题

bash - shell脚本用户管理程序