diff --git a/content/zh-cn/docs/concepts/overview/working-with-objects/labels.md b/content/zh-cn/docs/concepts/overview/working-with-objects/labels.md index 47daf31989..db53c138bb 100644 --- a/content/zh-cn/docs/concepts/overview/working-with-objects/labels.md +++ b/content/zh-cn/docs/concepts/overview/working-with-objects/labels.md @@ -15,9 +15,12 @@ weight: 40 **标签(Labels)** 是附加到 Kubernetes 对象(比如 Pod)上的键值对。 标签旨在用于指定对用户有意义且相关的对象的标识属性,但不直接对核心系统有语义含义。 @@ -46,14 +49,19 @@ and CLIs. Non-identifying information should be recorded using ## 动机 {#motivation} 标签使用户能够以松散耦合的方式将他们自己的组织结构映射到系统对象,而无需客户端存储这些映射。 @@ -69,7 +77,10 @@ Example labels: * `"track" : "daily"`, `"track" : "weekly"` 有一些[常用标签](/zh-cn/docs/concepts/overview/working-with-objects/common-labels/)的例子;你可以任意制定自己的约定。 请记住,标签的 Key 对于给定对象必须是唯一的。 @@ -77,11 +88,21 @@ These are examples of [commonly used labels](/docs/concepts/overview/working-wit ## 语法和字符集 {#syntax-and-character-set} @@ -111,7 +132,8 @@ Valid label value: * 包含破折号(`-`)、下划线(`_`)、点(`.`)和字母或数字 例如,这是一个有 `environment: production` 和 `app: nginx` 标签的 Pod 配置文件: @@ -136,7 +158,8 @@ spec: ## 标签选择算符 {#label-selectors} @@ -144,13 +167,16 @@ Unlike [names and UIDs](/docs/concepts/overview/working-with-objects/names/), la 标签不支持唯一性。通常,我们希望许多对象携带相同的标签。 通过**标签选择算符**,客户端/用户可以识别一组对象。标签选择算符是 Kubernetes 中的核心分组原语。 API 目前支持两种类型的选择算符:**基于等值的**和**基于集合的**。 标签选择算符可以由逗号分隔的多个**需求**组成。 @@ -166,7 +192,9 @@ them. {{< note >}} 对于某些 API 类别(例如 ReplicaSet)而言,两个实例的标签选择算符不得在命名空间内重叠, 否则它们的控制器将互相冲突,无法确定应该存在的副本个数。 @@ -174,7 +202,8 @@ For some API types, such as ReplicaSets, the label selectors of two instances mu {{< caution >}} 对于基于等值的和基于集合的条件而言,不存在逻辑或(`||`)操作符。 你要确保你的过滤语句按合适的方式组织。 @@ -183,8 +212,11 @@ For both equality-based and set-based conditions there is no logical _OR_ (`||`) ### **基于等值的**需求 @@ -200,8 +232,9 @@ tier != frontend 前者选择所有资源,其键名等于 `environment`,值等于 `production`。 后者选择所有资源,其键名等于 `tier`,值不同于 `frontend`,所有资源都没有带有 `tier` 键的标签。 @@ -234,7 +267,9 @@ spec: ### **基于集合**的需求 @@ -249,30 +284,39 @@ partition ``` -* 第一个示例选择了所有键等于 `environment` 并且值等于 `production` 或者 `qa` 的资源。 -* 第二个示例选择了所有键等于 `tier` 并且值不等于 `frontend` 或者 `backend` 的资源,以及所有没有 `tier` 键标签的资源。 -* 第三个示例选择了所有包含了有 `partition` 标签的资源;没有校验它的值。 -* 第四个示例选择了所有没有 `partition` 标签的资源;没有校验它的值。 +- 第一个示例选择了所有键等于 `environment` 并且值等于 `production` 或者 `qa` 的资源。 +- 第二个示例选择了所有键等于 `tier` 并且值不等于 `frontend` 或者 `backend` 的资源,以及所有没有 `tier` 键标签的资源。 +- 第三个示例选择了所有包含了有 `partition` 标签的资源;没有校验它的值。 +- 第四个示例选择了所有没有 `partition` 标签的资源;没有校验它的值。 类似地,逗号分隔符充当**与**运算符。因此,使用 `partition` 键(无论为何值)和 `environment` 不同于 `qa` 来过滤资源可以使用 `partition, environment notin (qa)` 来实现。 **基于集合**的标签选择算符是相等标签选择算符的一般形式,因为 `environment=production` 等同于 `environment in (production)`;`!=` 和 `notin` 也是类似的。 **基于集合**的要求可以与基于**相等**的要求混合使用。例如:`partition in (customerA, customerB),environment!=qa`。 @@ -281,7 +325,9 @@ _Set-based_ requirements can be mixed with _equality-based_ requirements. For ex ### LIST 和 WATCH 过滤 @@ -296,7 +342,8 @@ LIST 和 WATCH 操作可以使用查询参数指定标签选择算符过滤一 * **基于集合**的需求:`?labelSelector=environment+in+%28production%2Cqa%29%2Ctier+in+%28frontend%29` 两种标签选择算符都可以通过 REST 客户端用于 list 或者 watch 资源。 例如,使用 `kubectl` 定位 `apiserver`,可以使用**基于等值**的标签选择算符可以这么写: @@ -316,7 +363,8 @@ kubectl get pods -l 'environment in (production),tier in (frontend)' ``` 正如刚才提到的,**基于集合**的需求更具有表达力。例如,它们可以实现值的**或**操作: @@ -351,9 +399,12 @@ also use label selectors to specify sets of other resources, such as #### Service 和 ReplicationController @@ -380,7 +431,8 @@ selector: ``` 这个选择算符(分别在 `json` 或者 `yaml` 格式中)等价于 `component=redis` 或 `component in (redis)`。 @@ -411,7 +463,13 @@ selector: ``` `matchLabels` 是由 `{key,value}` 对组成的映射。 @@ -426,8 +484,9 @@ selector: #### 选择节点集