Skip to content

Commit 5eefdea

Browse files
authored
Merge pull request #35260 from Sea-n/zh-concepts-labels
[zh-cn] Resync labels.md
2 parents d7370f5 + 35260ab commit 5eefdea

File tree

1 file changed

+73
-42
lines changed
  • content/zh-cn/docs/concepts/overview/working-with-objects

1 file changed

+73
-42
lines changed

content/zh-cn/docs/concepts/overview/working-with-objects/labels.md

Lines changed: 73 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,10 @@ weight: 40
1616
<!--
1717
_Labels_ are key/value pairs that are attached to objects, such as pods.
1818
Labels are intended to be used to specify identifying attributes of objects that are meaningful and relevant to users, but do not directly imply semantics to the core system.
19-
Labels can be used to organize and to select subsets of objects.
20-
Labels can be attached to objects at creation time and subsequently added and modified at any time.
21-
Each object can have a set of key/value labels defined. Each Key must be unique for a given object.
19+
Labels can be used to organize and to select subsets of objects. Labels can be attached to objects at creation time and subsequently added and modified at any time.
20+
Each object can have a set of key/value labels defined. Each Key must be unique for a given object.
2221
-->
23-
_标签(Labels)_ 是附加到 Kubernetes 对象(比如 Pods)上的键值对。
22+
**标签(Labels)**是附加到 Kubernetes 对象(比如 Pods)上的键值对。
2423
标签旨在用于指定对用户有意义且相关的对象的标识属性,但不直接对核心系统有语义含义。
2524
标签可以用于组织和选择对象的子集。标签可以在创建时附加到对象,随后可以随时添加和修改。
2625
每个对象都可以定义一组键/值标签。每个键对于给定对象必须是唯一的。
@@ -49,7 +48,7 @@ and CLIs. Non-identifying information should be recorded using
4948
5049
Labels enable users to map their own organizational structures onto system objects in a loosely coupled fashion, without requiring clients to store these mappings.
5150
-->
52-
## 动机
51+
## 动机 {#motivation}
5352

5453
标签使用户能够以松散耦合的方式将他们自己的组织结构映射到系统对象,而无需客户端存储这些映射。
5554

@@ -78,15 +77,15 @@ These are examples of [commonly used labels](/docs/concepts/overview/working-wit
7877
<!--
7978
## Syntax and character set
8079
81-
_Labels_ are key/value pairs. Valid label keys have two segments: an optional prefix and name, separated by a slash (`/`). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character (`[a-z0-9A-Z]`) with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (`.`), not longer than 253 characters in total, followed by a slash (`/`).
80+
_Labels_ are key/value pairs. Valid label keys have two segments: an optional prefix and name, separated by a slash (`/`). The name segment is required and must be 63 characters or less, beginning and ending with an alphanumeric character (`[a-z0-9A-Z]`) with dashes (`-`), underscores (`_`), dots (`.`), and alphanumerics between. The prefix is optional. If specified, the prefix must be a DNS subdomain: a series of DNS labels separated by dots (`.`), not longer than 253 characters in total, followed by a slash (`/`).
8281
8382
If the prefix is omitted, the label Key is presumed to be private to the user. Automated system components (e.g. `kube-scheduler`, `kube-controller-manager`, `kube-apiserver`, `kubectl`, or other third-party automation) which add labels to end-user objects must specify a prefix.
8483
8584
The `kubernetes.io/` and `k8s.io/` prefixes are [reserved](/docs/reference/labels-annotations-taints/) for Kubernetes core components.
8685
-->
87-
## 语法和字符集
86+
## 语法和字符集 {#syntax-and-character-set}
8887

89-
_标签_ 是键值对。有效的标签键有两个段:可选的前缀和名称,用斜杠(`/`)分隔。
88+
**标签**是键值对。有效的标签键有两个段:可选的前缀和名称,用斜杠(`/`)分隔。
9089
名称段是必需的,必须小于等于 63 个字符,以字母数字字符(`[a-z0-9A-Z]`)开头和结尾,
9190
带有破折号(`-`),下划线(`_`),点( `.`)和之间的字母数字。
9291
前缀是可选的。如果指定,前缀必须是 DNS 子域:由点(`.`)分隔的一系列 DNS 标签,总共不超过 253 个字符,
@@ -111,10 +110,33 @@ Valid label value:
111110
* 除非标签值为空,必须以字母数字字符(`[a-z0-9A-Z]`)开头和结尾
112111
* 包含破折号(`-`)、下划线(`_`)、点(`.`)和字母或数字
113112

113+
<!--
114+
For example, here's the configuration file for a Pod that has two labels `environment: production` and `app: nginx` :
115+
-->
116+
例如,这是一个有 `environment: production``app: nginx` 标签的 Pod 配置文件:
117+
118+
```yaml
119+
120+
apiVersion: v1
121+
kind: Pod
122+
metadata:
123+
name: label-demo
124+
labels:
125+
environment: production
126+
app: nginx
127+
spec:
128+
containers:
129+
- name: nginx
130+
image: nginx:1.14.2
131+
ports:
132+
- containerPort: 80
133+
134+
```
135+
114136
<!--
115137
## Label selectors
116138
117-
Unlike [names and UIDs](/docs/user-guide/identifiers), labels do not provide uniqueness. In general, we expect many objects to carry the same label(s).
139+
Unlike [names and UIDs](/docs/concepts/overview/working-with-objects/names/), labels do not provide uniqueness. In general, we expect many objects to carry the same label(s).
118140
-->
119141
## 标签选择算符 {#label-selectors}
120142

@@ -124,15 +146,15 @@ Unlike [names and UIDs](/docs/user-guide/identifiers), labels do not provide uni
124146
<!--
125147
Via a _label selector_, the client/user can identify a set of objects. The label selector is the core grouping primitive in Kubernetes.
126148
-->
127-
通过 _标签选择算符_,客户端/用户可以识别一组对象。标签选择算符是 Kubernetes 中的核心分组原语。
149+
通过**标签选择算符**,客户端/用户可以识别一组对象。标签选择算符是 Kubernetes 中的核心分组原语。
128150

129151
<!--
130152
The API currently supports two types of selectors: _equality-based_ and _set-based_.
131153
A label selector can be made of multiple _requirements_ which are comma-separated. In the case of multiple requirements, all must be satisfied so the comma separator acts as a logical _AND_ (`&&`) operator.
132154
-->
133-
API 目前支持两种类型的选择算符:_基于等值的__基于集合的_
134-
标签选择算符可以由逗号分隔的多个 _需求_ 组成。
135-
在多个需求的情况下,必须满足所有要求,因此逗号分隔符充当逻辑 __`&&`)运算符。
155+
API 目前支持两种类型的选择算符:**基于等值的****基于集合的**
156+
标签选择算符可以由逗号分隔的多个**需求**组成。
157+
在多个需求的情况下,必须满足所有要求,因此逗号分隔符充当逻辑****`&&`)运算符。
136158

137159
<!--
138160
The semantics of empty or non-specified selectors are dependent on the context,
@@ -142,18 +164,18 @@ them.
142164
空标签选择算符或者未指定的选择算符的语义取决于上下文,
143165
支持使用选择算符的 API 类别应该将算符的合法性和含义用文档记录下来。
144166

167+
{{< note >}}
145168
<!--
146169
For some API types, such as ReplicaSets, the label selectors of two instances must not overlap within a namespace, or the controller can see that as conflicting instructions and fail to determine how many replicas should be present.
147170
-->
148-
{{< note >}}
149171
对于某些 API 类别(例如 ReplicaSet)而言,两个实例的标签选择算符不得在命名空间内重叠,
150172
否则它们的控制器将互相冲突,无法确定应该存在的副本个数。
151173
{{< /note >}}
152174

175+
{{< caution >}}
153176
<!--
154177
For both equality-based and set-based conditions there is no logical _OR_ (`||`) operator. Ensure your filter statements are structured accordingly.
155178
-->
156-
{{< caution >}}
157179
对于基于等值的和基于集合的条件而言,不存在逻辑或(`||`)操作符。
158180
你要确保你的过滤语句按合适的方式组织。
159181
{{< /caution >}}
@@ -162,14 +184,14 @@ For both equality-based and set-based conditions there is no logical _OR_ (`||`)
162184
### _Equality-based_ requirement
163185
164186
_Equality-_ or _inequality-based_ requirements allow filtering by label keys and values. Matching objects must satisfy all of the specified label constraints, though they may have additional labels as well.
165-
Three kinds of operators are admitted `=`,`==`,`!=`. The first two represent _equality_ (and are simply synonyms), while the latter represents _inequality_. For example:
187+
Three kinds of operators are admitted `=`,`==`,`!=`. The first two represent _equality_ (and are synonyms), while the latter represents _inequality_. For example:
166188
-->
167-
### _基于等值的_ 需求
189+
### **基于等值的**需求
168190

169-
_基于等值__基于不等值_ 的需求允许按标签键和值进行过滤。
191+
**基于等值****基于不等值**的需求允许按标签键和值进行过滤。
170192
匹配对象必须满足所有指定的标签约束,尽管它们也可能具有其他标签。
171-
可接受的运算符有 `=``==``!=` 三种。
172-
前两个表示 _相等_(并且只是同义词),而后者表示 _不相等_。例如:
193+
可接受的运算符有 `=``==``!=` 三种。
194+
前两个表示**相等**(并且是同义词),而后者表示**不相等**。例如:
173195

174196
```
175197
environment = production
@@ -214,9 +236,9 @@ spec:
214236
215237
_Set-based_ label requirements allow filtering keys according to a set of values. Three kinds of operators are supported: `in`,`notin` and `exists` (only the key identifier). For example:
216238
-->
217-
### _基于集合_ 的需求
239+
### **基于集合**的需求
218240

219-
_基于集合_ 的标签需求允许你通过一组值来过滤键。
241+
**基于集合**的标签需求允许你通过一组值来过滤键。
220242
支持三种操作符:`in`、`notin` 和 `exists`(只可以用在键标识符上)。例如:
221243

222244
```
@@ -240,19 +262,19 @@ Similarly the comma separator acts as an _AND_ operator. So filtering resources
240262
* 第三个示例选择了所有包含了有 `partition` 标签的资源;没有校验它的值。
241263
* 第四个示例选择了所有没有 `partition` 标签的资源;没有校验它的值。
242264
243-
类似地,逗号分隔符充当 _与_ 运算符。因此,使用 `partition` 键(无论为何值)和
265+
类似地,逗号分隔符充当 **与**运算符。因此,使用 `partition` 键(无论为何值)和
244266
`environment` 不同于 `qa` 来过滤资源可以使用 `partition, environment notin (qa)` 来实现。
245267
246268
<!--
247269
The _set-based_ label selector is a general form of equality since `environment=production` is equivalent to `environment in (production)`; similarly for `!=` and `notin`.
248270
-->
249-
_基于集合_ 的标签选择算符是相等标签选择算符的一般形式,因为 `environment=production`
271+
**基于集合**的标签选择算符是相等标签选择算符的一般形式,因为 `environment=production`
250272
等同于 `environment in (production)`;`!=` 和 `notin` 也是类似的。
251273
252274
<!--
253275
_Set-based_ requirements can be mixed with _equality-based_ requirements. For example: `partition in (customerA, customerB),environment!=qa`.
254276
-->
255-
_基于集合_ 的要求可以与基于 _相等_ 的要求混合使用。例如:`partition in (customerA, customerB),environment!=qa`。
277+
**基于集合**的要求可以与基于**相等**的要求混合使用。例如:`partition in (customerA, customerB),environment!=qa`。
256278
257279
## API
258280
@@ -270,22 +292,24 @@ LIST 和 WATCH 操作可以使用查询参数指定标签选择算符过滤一
270292
* _equality-based_ requirements: `?labelSelector=environment%3Dproduction,tier%3Dfrontend`
271293
* _set-based_ requirements: `?labelSelector=environment+in+%28production%2Cqa%29%2Ctier+in+%28frontend%29`
272294
-->
273-
* _基于等值_ 的需求:`?labelSelector=environment%3Dproduction,tier%3Dfrontend`
274-
* _基于集合_ 的需求:`?labelSelector=environment+in+%28production%2Cqa%29%2Ctier+in+%28frontend%29`
295+
* **基于等值**的需求:`?labelSelector=environment%3Dproduction,tier%3Dfrontend`
296+
* **基于集合**的需求:`?labelSelector=environment+in+%28production%2Cqa%29%2Ctier+in+%28frontend%29`
275297
276298
<!--
277299
Both label selector styles can be used to list or watch resources via a REST client. For example, targeting `apiserver` with `kubectl` and using _equality-based_ one may write:
278300
-->
279301
两种标签选择算符都可以通过 REST 客户端用于 list 或者 watch 资源。
280-
例如,使用 `kubectl` 定位 `apiserver`,可以使用 _基于等值_ 的标签选择算符可以这么写:
302+
例如,使用 `kubectl` 定位 `apiserver`,可以使用**基于等值**的标签选择算符可以这么写:
281303
282304
283305
```shell
284306
kubectl get pods -l environment=production,tier=frontend
285307
```
286308

287-
<!-- or using _set-based_ requirements: -->
288-
或者使用 _基于集合的_ 需求:
309+
<!--
310+
or using _set-based_ requirements:
311+
-->
312+
或者使用**基于集合的**需求:
289313

290314
```shell
291315
kubectl get pods -l 'environment in (production),tier in (frontend)'
@@ -294,14 +318,16 @@ kubectl get pods -l 'environment in (production),tier in (frontend)'
294318
<!--
295319
As already mentioned _set-based_ requirements are more expressive.  For instance, they can implement the _OR_ operator on values:
296320
-->
297-
正如刚才提到的,_基于集合_ 的需求更具有表达力。例如,它们可以实现值的 __ 操作:
321+
正如刚才提到的,**基于集合**的需求更具有表达力。例如,它们可以实现值的****操作:
298322

299323
```shell
300324
kubectl get pods -l 'environment in (production, qa)'
301325
```
302326

303-
<!-- or restricting negative matching via _exists_ operator: -->
304-
或者通过 _exists_ 运算符限制不匹配:
327+
<!--
328+
or restricting negative matching via _exists_ operator:
329+
-->
330+
或者通过**exists**运算符限制不匹配:
305331

306332
```shell
307333
kubectl get pods -l 'environment,environment notin (frontend)'
@@ -318,7 +344,7 @@ also use label selectors to specify sets of other resources, such as
318344
### 在 API 对象中设置引用
319345

320346
一些 Kubernetes 对象,例如 [`services`](/zh-cn/docs/concepts/services-networking/service/)
321-
[`replicationcontrollers`](/zh-cn/docs/concepts/workloads/controllers/replicationcontroller/)
347+
[`replicationcontrollers`](/zh-cn/docs/concepts/workloads/controllers/replicationcontroller/)
322348
也使用了标签选择算符去指定了其他资源的集合,例如
323349
[pods](/zh-cn/docs/concepts/workloads/pods/)
324350

@@ -335,15 +361,17 @@ Labels selectors for both objects are defined in `json` or `yaml` files using ma
335361
应该管理的 pods 的数量也是由标签选择算符定义的。
336362

337363
两个对象的标签选择算符都是在 `json` 或者 `yaml` 文件中使用映射定义的,并且只支持
338-
_基于等值_ 需求的选择算符:
364+
**基于等值**需求的选择算符:
339365

340366
```json
341367
"selector": {
342368
"component" : "redis",
343369
}
344370
```
345371

346-
<!-- or -->
372+
<!--
373+
or
374+
-->
347375
或者
348376

349377
```yaml
@@ -359,15 +387,19 @@ this selector (respectively in `json` or `yaml` format) is equivalent to `compon
359387
<!--
360388
#### Resources that support set-based requirements
361389

362-
Newer resources, such as [`Job`](/docs/concepts/jobs/run-to-completion-finite-workloads/), [`Deployment`](/docs/concepts/workloads/controllers/deployment/), [`Replica Set`](/docs/concepts/workloads/controllers/replicaset/), and [`Daemon Set`](/docs/concepts/workloads/controllers/daemonset/), support _set-based_ requirements as well.
390+
Newer resources, such as [`Job`](/docs/concepts/workloads/controllers/job/),
391+
[`Deployment`](/docs/concepts/workloads/controllers/deployment/),
392+
[`ReplicaSet`](/docs/concepts/workloads/controllers/replicaset/), and
393+
[`DaemonSet`](/docs/concepts/workloads/controllers/daemonset/),
394+
support _set-based_ requirements as well.
363395
-->
364396
#### 支持基于集合需求的资源
365397

366398
比较新的资源,例如 [`Job`](/zh-cn/docs/concepts/workloads/controllers/job/)、
367399
[`Deployment`](/zh-cn/docs/concepts/workloads/controllers/deployment/)、
368-
[`Replica Set`](/zh-cn/docs/concepts/workloads/controllers/replicaset/) 和
400+
[`ReplicaSet`](/zh-cn/docs/concepts/workloads/controllers/replicaset/) 和
369401
[`DaemonSet`](/zh-cn/docs/concepts/workloads/controllers/daemonset/),
370-
也支持 _基于集合的_ 需求。
402+
也支持**基于集合的**需求。
371403

372404
```yaml
373405
selector:
@@ -379,7 +411,7 @@ selector:
379411
```
380412

381413
<!--
382-
`matchLabels` is a map of `{key,value}` pairs. A single `{key,value}` in the `matchLabels` map is equivalent to an element of `matchExpressions`, whose `key` field is "key", the `operator` is "In", and the `values` array contains only "value". `matchExpressions` is a list of pod selector requirements. Valid operators include In, NotIn, Exists, and DoesNotExist. The values set must be non-empty in the case of In and NotIn. All of the requirements, from both `matchLabels` and `matchExpressions` are ANDed together - they must all be satisfied in order to match.
414+
`matchLabels` is a map of `{key,value}` pairs. A single `{key,value}` in the `matchLabels` map is equivalent to an element of `matchExpressions`, whose `key` field is "key", the `operator` is "In", and the `values` array contains only "value". `matchExpressions` is a list of pod selector requirements. Valid operators include In, NotIn, Exists, and DoesNotExist. The values set must be non-empty in the case of In and NotIn. All of the requirements, from both `matchLabels` and `matchExpressions` are ANDed together -- they must all be satisfied in order to match.
383415
-->
384416

385417
`matchLabels` 是由 `{key,value}` 对组成的映射。
@@ -395,10 +427,9 @@ selector:
395427
#### Selecting sets of nodes
396428

397429
One use case for selecting over labels is to constrain the set of nodes onto which a pod can schedule.
398-
See the documentation on [node selection](/docs/concepts/configuration/assign-pod-node/) for more information.
430+
See the documentation on [node selection](/docs/concepts/scheduling-eviction/assign-pod-node/) for more information.
399431
-->
400432
#### 选择节点集
401433

402434
通过标签进行选择的一个用例是确定节点集,方便 Pod 调度。
403435
有关更多信息,请参阅[选择节点](/zh-cn/docs/concepts/scheduling-eviction/assign-pod-node/)文档。
404-

0 commit comments

Comments
 (0)