@@ -17,7 +17,7 @@ A _DaemonSet_ ensures that all (or some) Nodes run a copy of a Pod. As nodes ar
17
17
cluster, Pods are added to them. As nodes are removed from the cluster, those Pods are garbage
18
18
collected. Deleting a DaemonSet will clean up the Pods it created.
19
19
--->
20
- _ DaemonSet _ 确保全部(或者某些)节点上运行一个 Pod 的副本。
20
+ ** DaemonSet ** 确保全部(或者某些)节点上运行一个 Pod 的副本。
21
21
当有节点加入集群时, 也会为他们新增一个 Pod 。
22
22
当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。
23
23
@@ -89,17 +89,14 @@ section.
89
89
-->
90
90
### 必需字段 {#required-fields}
91
91
92
- 和所有其他 Kubernetes 配置一样,DaemonSet 需要 ` apiVersion ` 、` kind ` 和 ` metadata ` 字段。
93
- 有关配置文件的基本信息,参见
94
- [ 部署应用] ( /zh-cn/docs/tasks/run-application/run-stateless-application-deployment/ ) 、
95
- [ 配置容器] ( /zh-cn/docs/tasks/ ) 和
96
- [ 使用 kubectl 进行对象管理] ( /zh-cn/docs/concepts/overview/working-with-objects/object-management/ )
97
- 文档。
92
+ 与所有其他 Kubernetes 配置一样,DaemonSet 也需要 ` apiVersion ` 、` kind ` 和 ` metadata ` 字段。
93
+ 有关使用这些配置文件的通用信息,
94
+ 参见[ 运行无状态应用] ( /zh-cn/docs/tasks/run-application/run-stateless-application-deployment/ ) 和[ 使用 kubectl 管理对象] ( /zh-cn/docs/concepts/overview/working-with-objects/object-management/ ) 。
98
95
99
96
DaemonSet 对象的名称必须是一个合法的
100
97
[ DNS 子域名] ( /zh-cn/docs/concepts/overview/working-with-objects/names#dns-subdomain-names ) 。
101
98
102
- DaemonSet 也需要一个 [ ` .spec ` ] ( https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status ) 配置段 。
99
+ DaemonSet 也需要 [ ` .spec ` ] ( https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#spec-and-status ) 节区 。
103
100
104
101
<!--
105
102
### Pod Template
@@ -165,7 +162,7 @@ The `.spec.selector` is an object consisting of two fields:
165
162
* ` matchLabels ` - 与 [ ReplicationController] ( /zh-cn/docs/concepts/workloads/controllers/replicationcontroller/ )
166
163
的 ` .spec.selector ` 的作用相同。
167
164
* ` matchExpressions ` - 允许构建更加复杂的选择器,可以通过指定 key、value
168
- 列表以及将 key 和 value 列表关联起来的 operator 。
165
+ 列表以及将 key 和 value 列表关联起来的 Operator 。
169
166
170
167
<!--
171
168
When the two are specified the result is ANDed.
@@ -192,10 +189,9 @@ If you do not specify either, then the DaemonSet controller will create Pods on
192
189
### 仅在某些节点上运行 Pod {#running-pods-on-only-some-nodes}
193
190
194
191
如果指定了 ` .spec.template.spec.nodeSelector ` ,DaemonSet 控制器将在能够与
195
- [ Node 选择算符] ( /zh-cn/docs/concepts/scheduling-eviction/assign-pod-node/ ) 匹配的节点上创建 Pod。
196
- 类似这种情况,可以指定 ` .spec.template.spec.affinity ` ,之后 DaemonSet 控制器
197
- 将在能够与[ 节点亲和性] ( /zh-cn/docs/concepts/scheduling-eviction/assign-pod-node/ )
198
- 匹配的节点上创建 Pod。
192
+ [ Node 选择算符] ( /zh-cn/docs/concepts/scheduling-eviction/assign-pod-node/ ) 匹配的节点上创建 Pod。
193
+ 类似这种情况,可以指定 ` .spec.template.spec.affinity ` ,之后 DaemonSet
194
+ 控制器将在能够与[ 节点亲和性] ( /zh-cn/docs/concepts/scheduling-eviction/assign-pod-node/ ) 匹配的节点上创建 Pod。
199
195
如果根本就没有指定,则 DaemonSet Controller 将在所有节点上创建 Pod。
200
196
201
197
<!--
@@ -228,9 +224,8 @@ DaemonSet 确保所有符合条件的节点都运行该 Pod 的一个副本。
228
224
229
225
* Pod 行为的不一致性:正常 Pod 在被创建后等待调度时处于 ` Pending ` 状态,
230
226
DaemonSet Pods 创建后不会处于 ` Pending ` 状态下。这使用户感到困惑。
231
- * [ Pod 抢占] ( /zh-cn/docs/concepts/scheduling-eviction/pod-priority-preemption/ )
232
- 由默认调度器处理。启用抢占后,DaemonSet 控制器将在不考虑 Pod 优先级和抢占
233
- 的情况下制定调度决策。
227
+ * [ Pod 抢占] ( /zh-cn/docs/concepts/scheduling-eviction/pod-priority-preemption/ ) 由默认调度器处理。
228
+ 启用抢占后,DaemonSet 控制器将在不考虑 Pod 优先级和抢占的情况下制定调度决策。
234
229
235
230
<!--
236
231
`ScheduleDaemonSetPods` allows you to schedule DaemonSets using the default
@@ -242,8 +237,8 @@ taken into account before selecting the target host). The DaemonSet controller o
242
237
performs these operations when creating or modifying DaemonSet pods, and no
243
238
changes are made to the `spec.template` of the DaemonSet.
244
239
-->
245
- ` ScheduleDaemonSetPods ` 允许你使用默认调度器而不是 DaemonSet 控制器来调度 DaemonSets ,
246
- 方法是将 ` NodeAffinity ` 条件而不是 ` .spec.nodeName ` 条件添加到 DaemonSet Pods 。
240
+ ` ScheduleDaemonSetPods ` 允许你使用默认调度器而不是 DaemonSet 控制器来调度这些 DaemonSet ,
241
+ 方法是将 ` NodeAffinity ` 条件而不是 ` .spec.nodeName ` 条件添加到这些 DaemonSet Pod 。
247
242
默认调度器接下来将 Pod 绑定到目标主机。
248
243
如果 DaemonSet Pod 的节点亲和性配置已存在,则被替换
249
244
(原始的节点亲和性配置在选择目标主机之前被考虑)。
@@ -266,8 +261,8 @@ In addition, `node.kubernetes.io/unschedulable:NoSchedule` toleration is added
266
261
automatically to DaemonSet Pods. The default scheduler ignores
267
262
` unschedulable` Nodes when scheduling DaemonSet Pods.
268
263
-->
269
- 此外,系统会自动添加 `node.kubernetes.io/unschedulable:NoSchedule` 容忍度到
270
- DaemonSet Pods 。在调度 DaemonSet Pod 时,默认调度器会忽略 `unschedulable` 节点。
264
+ 此外,系统会自动添加 `node.kubernetes.io/unschedulable:NoSchedule` 容忍度到这些
265
+ DaemonSet Pod 。在调度 DaemonSet Pod 时,默认调度器会忽略 `unschedulable` 节点。
271
266
272
267
<!--
273
268
# ## Taints and Tolerations
@@ -279,8 +274,8 @@ the related features.
279
274
-->
280
275
# ## 污点和容忍度 {#taint-and-toleration}
281
276
282
- 尽管 Daemon Pods 遵循[污点和容忍度](/zh-cn/docs/concepts/scheduling-eviction/taint-and-toleration)
283
- 规则, 根据相关特性,控制器会自动将以下容忍度添加到 DaemonSet Pod:
277
+ 尽管 Daemon Pod 遵循[污点和容忍度](/zh-cn/docs/concepts/scheduling-eviction/taint-and-toleration)规则,
278
+ 根据相关特性,控制器会自动将以下容忍度添加到 DaemonSet Pod:
284
279
285
280
| 容忍度键名 | 效果 | 版本 | 描述 |
286
281
| ---------------------------------------- | ---------- | ------- | ------------------------------------------------------------ |
@@ -294,6 +289,7 @@ the related features.
294
289
<!--
295
290
# # Communicating with Daemon Pods
296
291
-->
292
+ # # 与 Daemon Pods 通信 {#communicating-with-daemon-pods}
297
293
298
294
<!--
299
295
Some possible patterns for communicating with Pods in a DaemonSet are :
@@ -309,8 +305,6 @@ Some possible patterns for communicating with Pods in a DaemonSet are:
309
305
- **Service**: Create a service with the same Pod selector, and use the service to reach a
310
306
daemon on a random node. (No way to reach specific node.)
311
307
-->
312
- # # 与 Daemon Pods 通信 {#communicating-with-daemon-pods}
313
-
314
308
与 DaemonSet 中的 Pod 进行通信的几种可能模式如下:
315
309
316
310
- **推送(Push)**:配置 DaemonSet 中的 Pod,将更新发送到另一个服务,例如统计数据库。
@@ -319,12 +313,10 @@ Some possible patterns for communicating with Pods in a DaemonSet are:
319
313
- **NodeIP 和已知端口**:DaemonSet 中的 Pod 可以使用 `hostPort`,从而可以通过节点 IP
320
314
访问到 Pod。客户端能通过某种方法获取节点 IP 列表,并且基于此也可以获取到相应的端口。
321
315
322
- - **DNS**:创建具有相同 Pod 选择算符的
323
- [无头服务](/zh-cn/docs/concepts/services-networking/service/#headless-services),
316
+ - **DNS**:创建具有相同 Pod 选择算符的[无头服务](/zh-cn/docs/concepts/services-networking/service/#headless-services),
324
317
通过使用 `endpoints` 资源或从 DNS 中检索到多个 A 记录来发现 DaemonSet。
325
318
326
- - **Service**:创建具有相同 Pod 选择算符的服务,并使用该服务随机访问到某个节点上的
327
- 守护进程(没有办法访问到特定节点)。
319
+ - **Service**:创建具有相同 Pod 选择算符的服务,并使用该服务随机访问到某个节点上的守护进程(没有办法访问到特定节点)。
328
320
329
321
<!--
330
322
# # Updating a DaemonSet
@@ -376,8 +368,7 @@ running such processes via a DaemonSet:
376
368
- Ability to monitor and manage logs for daemons in the same way as applications.
377
369
- Same config language and tools (e.g. Pod templates, `kubectl`) for daemons and applications.
378
370
- Running daemons in containers with resource limits increases isolation between daemons from app
379
- containers. However, this can also be accomplished by running the daemons in a container but not in a Pod
380
- (e.g. start directly via Docker).
371
+ containers. However, this can also be accomplished by running the daemons in a container but not in a Pod.
381
372
-->
382
373
直接在节点上启动守护进程(例如使用 `init`、`upstartd` 或 `systemd`)的做法当然是可行的。
383
374
不过,基于 DaemonSet 来运行这些进程有如下一些好处:
@@ -388,7 +379,6 @@ running such processes via a DaemonSet:
388
379
389
380
- 在资源受限的容器中运行守护进程能够增加守护进程和应用容器的隔离性。
390
381
然而,这一点也可以通过在容器中运行守护进程但却不在 Pod 中运行之来实现。
391
- 例如,直接基于 Docker 启动。
392
382
393
383
<!--
394
384
# ## Bare Pods
@@ -436,12 +426,12 @@ all or certain hosts, if the DaemonSet provides node-level functionality that al
436
426
437
427
For example, [network plugins](/docs/concepts/extend-kubernetes/compute-storage-net/network-plugins/) often include a component that runs as a DaemonSet. The DaemonSet component makes sure that the node where it's running has working cluster networking.
438
428
-->
439
- # ## Deployments
429
+ # ## Deployment
440
430
441
- DaemonSet 与 [Deployments ](/zh-cn/docs/concepts/workloads/controllers/deployment/) 非常类似,
431
+ DaemonSet 与 [Deployment ](/zh-cn/docs/concepts/workloads/controllers/deployment/) 非常类似,
442
432
它们都能创建 Pod,并且 Pod 中的进程都不希望被终止(例如,Web 服务器、存储服务器)。
443
433
444
- 建议为无状态的服务使用 Deployments ,比如前端服务。
434
+ 建议为无状态的服务使用 Deployment ,比如前端服务。
445
435
对这些服务而言,对副本的数量进行扩缩容、平滑升级,比精确控制 Pod 运行在某个主机上要重要得多。
446
436
当需要 Pod 副本总是运行在全部或特定主机上,并且当该 DaemonSet 提供了节点级别的功能(允许其他 Pod 在该特定节点上正确运行)时,
447
437
应该使用 DaemonSet。
@@ -465,7 +455,7 @@ DaemonSet 与 [Deployments](/zh-cn/docs/concepts/workloads/controllers/deploymen
465
455
Read the {{< api-reference page="workload-resources/daemon-set-v1" >}}
466
456
object definition to understand the API for daemon sets.
467
457
-->
468
- * 了解 [Pods ](/zh-cn/docs/concepts/workloads/pods)。
458
+ * 了解 [Pod ](/zh-cn/docs/concepts/workloads/pods)。
469
459
* 了解[静态 Pod](#static-pods),这对运行 Kubernetes {{< glossary_tooltip text="控制面" term_id="control-plane" >}}组件有帮助。
470
460
* 了解如何使用 DaemonSet
471
461
* [对 DaemonSet 执行滚动更新](/zh-cn/docs/tasks/manage-daemon/update-daemon-set/)
0 commit comments