From 0cdbcad949daa0f0a3f0ff00010ba95e3fdc8ae8 Mon Sep 17 00:00:00 2001 From: SataQiu <1527062125@qq.com> Date: Mon, 10 Dec 2018 18:20:19 +0800 Subject: [PATCH] zh-trans: add docs/concepts/overview/working-with-objects/field-selectors.md (#11565) * zh-trans: add docs/concepts/overview/working-with-objects/field-selectors.md * update field-selectors.md --- .../working-with-objects/field-selectors.md | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 content/zh/docs/concepts/overview/working-with-objects/field-selectors.md diff --git a/content/zh/docs/concepts/overview/working-with-objects/field-selectors.md b/content/zh/docs/concepts/overview/working-with-objects/field-selectors.md new file mode 100644 index 0000000000..b00442633c --- /dev/null +++ b/content/zh/docs/concepts/overview/working-with-objects/field-selectors.md @@ -0,0 +1,106 @@ +--- +title: 字段选择器 +weight: 60 +--- + + + +字段选择器允许您根据一个或多个资源字段的值[筛选 Kubernetes 资源](/docs/concepts/overview/working-with-objects/kubernetes-objects)。 +下面是一些使用字段选择器查询的例子: + + +* `metadata.name=my-service` +* `metadata.namespace!=default` +* `status.phase=Pending` + +下面这个 `kubectl` 命令将筛选出[`status.phase`](/docs/concepts/workloads/pods/pod-lifecycle/#pod-phase)字段值为 `Running` 的所有 Pod: + + +```shell +$ kubectl get pods --field-selector status.phase=Running +``` + +{{< note >}} + +字段选择器本质上是资源*过滤器*。默认情况下,字段选择器/过滤器是未被应用的,这意味着指定类型的所有资源都会被筛选出来。 +这使得以下的两个 `kubectl` 查询是等价的: + + +```shell +$ kubectl get pods +$ kubectl get pods --field-selector "" +``` +{{< /note >}} + +## 支持的字段 + + +不同的 Kubernetes 资源类型支持不同的字段选择器。 +所有资源类型都支持 `metadata.name` 和 `metadata.namespace` 字段。 +使用不被支持的字段选择器会产生错误,例如: + + +```shell +$ 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: + + +```shell +$ kubectl get services --field-selector metadata.namespace!=default +``` + +## 链式选择器 + + +同[标签](/docs/concepts/overview/working-with-objects/labels)和其他选择器一样,字段选择器可以通过使用逗号分隔的列表组成一个选择链。 +下面这个 `kubectl` 命令将筛选 `status.phase` 字段不等于 `Running` 同时 `spec.restartPolicy` 字段等于 `Always` 的所有 Pod: + + +```shell +$ kubectl get pods --field-selector=status.phase!=Running,spec.restartPolicy=Always +``` + +## 多种资源类型 + + +您能够跨多种资源类型来使用字段选择器。 +下面这个 `kubectl` 命令将筛选出所有不在 `default` 命名空间中的 StatefulSet 和 Service: + + +```shell +$ kubectl get statefulsets,services --field-selector metadata.namespace!=default +```