字段选择器
概述
字段选择器(Field Selector)可以用来基于的一个或多个字段的取值来选取一组Kubernetes对象。下面有一些示例性的字段选择器:
metadata.name=my-service
metadata.namespace!=default
status.phase=Pending
下面的 kubectl
命令选择了所有字段 status.phase
的取值为 Running
的 Pod:
说明:--field-selector status.phase=Running 等价于--field-selector=status.phase=Running,注意中间的空格和等号,下面的示例也是一样的
kubectl get pods --field-selector status.phase=Running
TIP
字段选择器本质上是一个 filter
。默认情况下,没有添加 selector/filter 时,代表着指定资源类型的所有对象都被选中。下面个两个 kubectl 查询时等价的:
kubectl get pods
kubectl get pods --field-selector ""
# 支持的字段
不同的 Kubernetes 对象类型,可以用来查询的字段不一样。所有的对象类型都支持的两个字段是 metadata.name
和 metadata.namespace
。在字段选择器中使用不支持的字段,将报错。例如:
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"
# 支持的操作符
字段选择器中可以使用的操作符有 =
、==
、!=
(=
和 ==
含义相同)。例如,下面的 kubectl
命令,查询不在 default
名称空间中的 Service:
kubectl get services --all-namespaces --field-selector metadata.namespace!=default
# 多选择器
可以指定多个字段选择器,用逗号 ,
分隔。下面的 kubectl
命令查询所有的 status.phase
不等于 Running
且 spec.restartPolicy
等于 Always
的 Pod:
kubectl get pods --field-selector=status.phase!=Running,spec.restartPolicy=Always
# 多种对象类型
字段选择器可以跨资源类型使用。下面的 kubectl
命令查询所有的不在 default
名称空间的 StatefulSet 和 Service:
kubectl get statefulsets,services --all-namespaces --field-selector metadata.namespace!=default
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!