Black lives matter.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
We stand in solidarity with the Black community.
Racism is unacceptable.
It conflicts with the core values of the Kubernetes project and our community does not tolerate it.
字段选择器(Field selectors)允许您根据一个或多个资源字段的值筛选 Kubernetes 资源。 下面是一些使用字段选择器查询的例子:
metadata.name=my-service
metadata.namespace!=default
status.phase=Pending
下面这个 kubectl
命令将筛选出 status.phase
字段值为 Running
的所有 Pod:
kubectl get pods --field-selector status.phase=Running
注意: 字段选择器本质上是资源*过滤器*。默认情况下,字段选择器/过滤器是未被应用的,这意味着指定类型的所有资源都会被筛选出来。 这使得以下的两个 `kubectl` 查询是等价的: ```shell 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
命名空间的 Kubernetes 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