From 39d9d0a4c36abcfa6a519a70fca0c0242707e117 Mon Sep 17 00:00:00 2001 From: windsonsea Date: Tue, 10 Oct 2023 15:34:08 +0800 Subject: [PATCH] [zh] Sync taint-and-toleration.md --- .../taint-and-toleration.md | 85 ++++++++++++------- .../topology-spread-constraints.md | 36 ++++++-- 2 files changed, 84 insertions(+), 37 deletions(-) diff --git a/content/zh-cn/docs/concepts/scheduling-eviction/taint-and-toleration.md b/content/zh-cn/docs/concepts/scheduling-eviction/taint-and-toleration.md index 1e4d8c2f8938d..9309db8b3bb4c 100644 --- a/content/zh-cn/docs/concepts/scheduling-eviction/taint-and-toleration.md +++ b/content/zh-cn/docs/concepts/scheduling-eviction/taint-and-toleration.md @@ -142,13 +142,51 @@ An empty `effect` matches all effects with key `key1`. 上述例子中 `effect` 使用的值为 `NoSchedule`,你也可以使用另外一个值 `PreferNoSchedule`。 -这是“优化”或“软”版本的 `NoSchedule` —— 系统会 **尽量** 避免将 Pod 调度到存在其不能容忍污点的节点上, -但这不是强制的。`effect` 的值还可以设置为 `NoExecute`,下文会详细描述这个值。 + + +`effect` 字段的允许值包括: + + +`NoExecute` +: 这会影响已在节点上运行的 Pod,具体影响如下: + * 如果 Pod 不能容忍这类污点,会马上被驱逐。 + * 如果 Pod 能够容忍这类污点,但是在容忍度定义中没有指定 `tolerationSeconds`, + 则 Pod 还会一直在这个节点上运行。 + * 如果 Pod 能够容忍这类污点,而且指定了 `tolerationSeconds`, + 则 Pod 还能在这个节点上继续运行这个指定的时间长度。 + 这段时间过去后,节点生命周期控制器从节点驱除这些 Pod。 + + +`NoSchedule` +: 除非具有匹配的容忍度规约,否则新的 Pod 不会被调度到带有污点的节点上。 + 当前正在节点上运行的 Pod **不会**被驱逐。 + + +`PreferNoSchedule` +: `PreferNoSchedule` 是“偏好”或“软性”的 `NoSchedule`。 + 控制平面将**尝试**避免将不能容忍污点的 Pod 调度到的节点上,但不能保证完全避免。 通常情况下,如果给一个节点添加了一个 effect 值为 `NoExecute` 的污点, -则任何不能忍受这个污点的 Pod 都会马上被驱逐,任何可以忍受这个污点的 Pod 都不会被驱逐。 +则任何不能容忍这个污点的 Pod 都会马上被驱逐,任何可以容忍这个污点的 Pod 都不会被驱逐。 但是,如果 Pod 存在一个 effect 值为 `NoExecute` 的容忍度指定了可选属性 `tolerationSeconds` 的值,则表示在给节点添加了上述污点之后, Pod 还能继续在节点上运行的时间。例如, @@ -327,7 +365,7 @@ manually add tolerations to your pods. * **Taint based Evictions**: A per-pod-configurable eviction behavior when there are node problems, which is described in the next section. --> -* **基于污点的驱逐**: 这是在每个 Pod 中配置的在节点出现问题时的驱逐行为, +* **基于污点的驱逐**:这是在每个 Pod 中配置的在节点出现问题时的驱逐行为, 接下来的章节会描述这个特性。 -前文提到过污点的效果值 `NoExecute` 会影响已经在节点上运行的如下 Pod: - -* 如果 Pod 不能忍受这类污点,Pod 会马上被驱逐。 -* 如果 Pod 能够忍受这类污点,但是在容忍度定义中没有指定 `tolerationSeconds`, - 则 Pod 还会一直在这个节点上运行。 -* 如果 Pod 能够忍受这类污点,而且指定了 `tolerationSeconds`, - 则 Pod 还能在这个节点上继续运行这个指定的时间长度。 - 在节点被排空时,节点控制器或者 kubelet 会添加带有 `NoExecute` 效果的相关污点。 +此效果被默认添加到 `node.kubernetes.io/not-ready` 和 `node.kubernetes.io/unreachable` 污点中。 如果异常状态恢复正常,kubelet 或节点控制器能够移除相关的污点。 ```yaml --- apiVersion: v1 @@ -164,12 +184,16 @@ your cluster. Those fields are: {{< note >}} - `minDomains` 字段是一个 Beta 字段,在 1.25 中默认被禁用。 - 你可以通过启用 `MinDomainsInPodTopologySpread` - [特性门控](/zh-cn/docs/reference/command-line-tools-reference/feature-gates/)来启用该字段。 + `MinDomainsInPodTopologySpread` + [特性门控](/zh-cn/docs/reference/command-line-tools-reference/feature-gates/)为 + Pod 拓扑分布启用 `minDomains`。自 v1.28 起,`MinDomainsInPodTopologySpread` 特性门控默认被启用。 + 在早期的 Kubernetes 集群中,此特性门控可能被显式禁用或此字段可能不可用。 {{< /note >}}