AI 助教问 AI 助教
东方瑞通 · CKA

调度策略、Taints与Toleration

Taint 是打在 Node 上的排斥标记,Toleration 是 Pod 上的容忍声明,只有带匹配 Toleration 的 Pod 才能调度到带 Taint 的节点。

考点精讲

  1. Taints 和 Toleration 是一套「排斥 + 容忍」的调度机制,用于控制哪些 Pod 能调度到哪些节点。Taint 是打在节点上的排斥标记,Toleration 是写在 Pod 上的容忍声明,只有带匹配 Toleration 的 Pod 才能调度到带对应 Taint 的节点。Taint 有三种效果:NoSchedule(不调度新 Pod)、PreferNoSchedule(尽量不调度)、NoExecute(既拒绝新 Pod、又驱逐已运行的 Pod)。Toleration 与 Taint 按 key/value/effect 三要素匹配。典型的应用是:控制平面节点默认带有 NoSchedule 污点,普通工作负载不会调度上去。与 nodeSelector/nodeAffinity(把 Pod「拉」到指定节点)不同,Taint 是「排斥」机制。

记忆技巧

Taint 是节点上的禁区,Toleration 是通行证
NoExecute 最狠:既拒绝新 Pod 又驱逐旧 Pod

常见误区

  • 以为加了 Toleration 就等于强制调度(还需资源满足)
  • Taint 与 Toleration 的 key/effect 不完全一致导致不生效
  • 混淆 nodeSelector(选节点)与 Taint(排斥节点)

真题思路

  • 【示例】本页题目为教学模拟题,非真题,仅用于讲解答题思路 给节点打上效果为 NoExecute 的 Taint 后,会发生什么?
    只拒绝新 Pod,已运行的 Pod 不受影响 拒绝新 Pod,并驱逐已运行且无对应 Toleration 的 Pod 所有 Pod 照常调度 节点自动关闭
    答案:B
    解析:NoExecute 效果最强:既拒绝新 Pod,又驱逐已运行且无匹配 Toleration 的 Pod。

常见问题

Q:Taint 和 Toleration 是什么关系

A:Taint 打在节点上表示排斥,Toleration 写在 Pod 上表示容忍,匹配后才能调度。

Q:NoExecute 和 NoSchedule 区别

A:NoSchedule 只拒绝新 Pod,NoExecute 还驱逐已运行的 Pod。

Q:nodeSelector 和 Taint 区别

A:nodeSelector 把 Pod「拉」到指定节点,Taint 是节点「排斥」Pod。

相关知识

教材出处:第12章 Kubernetes资源调度 调度策略、Taints与Toleration

AI 助教

让 AI 助教带你深入学习,把你卡住的地方直接问它

随时为您答疑解惑

开始答疑