Skip to content

Commit d18d8d8

Browse files
authored
Merge pull request #27879 from shannonxtreme/taints-tolerations
Add information about node conditions
2 parents cdfdd3e + e315da8 commit d18d8d8

File tree

1 file changed

+17
-4
lines changed

1 file changed

+17
-4
lines changed

content/en/docs/concepts/scheduling-eviction/taint-and-toleration.md

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -266,9 +266,23 @@ This ensures that DaemonSet pods are never evicted due to these problems.
266266

267267
## Taint Nodes by Condition
268268

269-
The node lifecycle controller automatically creates taints corresponding to
270-
Node conditions with `NoSchedule` effect.
271-
Similarly the scheduler does not check Node conditions; instead the scheduler checks taints. This assures that Node conditions don't affect what's scheduled onto the Node. The user can choose to ignore some of the Node's problems (represented as Node conditions) by adding appropriate Pod tolerations.
269+
The control plane, using the node {{<glossary_tooltip text="controller" term_id="controller">}},
270+
automatically creates taints with a `NoSchedule` effect for [node conditions](/docs/concepts/scheduling-eviction/pod-eviction#node-conditions).
271+
272+
The scheduler checks taints, not node conditions, when it makes scheduling
273+
decisions. This ensures that node conditions don't directly affect scheduling.
274+
For example, if the `DiskPressure` node condition is active, the control plane
275+
adds the `node.kubernetes.io/disk-pressure` taint and does not schedule new pods
276+
onto the affected node. If the `MemoryPressure` node condition is active, the
277+
control plane adds the `node.kubernetes.io/memory-pressure` taint.
278+
279+
You can ignore node conditions for newly created pods by adding the corresponding
280+
Pod tolerations. The control plane also adds the `node.kubernetes.io/memory-pressure`
281+
toleration on pods that have a {{< glossary_tooltip text="QoS class" term_id="qos-class" >}}
282+
other than `BestEffort`. This is because Kubernetes treats pods in the `Guaranteed`
283+
or `Burstable` QoS classes (even pods with no memory request set) as if they are
284+
able to cope with memory pressure, while new `BestEffort` pods are not scheduled
285+
onto the affected node.
272286

273287
The DaemonSet controller automatically adds the following `NoSchedule`
274288
tolerations to all daemons, to prevent DaemonSets from breaking.
@@ -282,7 +296,6 @@ tolerations to all daemons, to prevent DaemonSets from breaking.
282296
Adding these tolerations ensures backward compatibility. You can also add
283297
arbitrary tolerations to DaemonSets.
284298

285-
286299
## {{% heading "whatsnext" %}}
287300

288301
* Read about [out of resource handling](/docs/concepts/scheduling-eviction/out-of-resource/) and how you can configure it

0 commit comments

Comments
 (0)