Skip to content

Kubernetes 污点(Taints)与容忍(Tolerations):从零基础到精通

一套系统化教材:概念 → 原理 → 实战 → 排错 → 面试。 适合人群:K8s 初学者、运维/SRE 工程师、准备 CKA/CKS 考试的读者。

学习路径

章节内容难度
第 1 章:调度基础与核心概念调度器工作原理、为什么需要污点与容忍
第 2 章:Taints 污点详解三种 Effect、kubectl taint 命令、污点的增删改查⭐⭐
第 3 章:Tolerations 容忍详解Pod 容忍的完整字段、Equal/Exists 运算符、匹配规则⭐⭐
第 4 章:内置污点与自动容忍机制node.kubernetes.io/* 污点、DaemonSet 容忍、tolerationSeconds⭐⭐⭐
第 5 章:实战场景专用节点、GPU 节点、基于污点的驱逐、节点维护⭐⭐⭐
第 6 章:与亲和性调度的对比与组合Taints vs NodeSelector vs NodeAffinity,组合套路⭐⭐⭐
第 7 章:故障排查与调试Pending 排查、常见报错、调度事件分析⭐⭐⭐
第 8 章:最佳实践与面试题生产实践清单、CKA 考点、高频面试题(含答案)⭐⭐⭐⭐
附录:动手实验(kind 集群)5 个循序渐进的完整实验⭐⭐

快速上手(30 秒版)

bash
# 给节点打污点:不允许新 Pod 调度上来
kubectl taint nodes node1 env=prod:NoSchedule

# Pod 声明容忍,才能调度到被污点的节点
# spec:
#   tolerations:
#   - key: "env"
#     operator: "Equal"
#     value: "prod"
#     effect: "NoSchedule"

# 删除污点(注意末尾的减号)
kubectl taint nodes node1 env=prod:NoSchedule-

一句话理解

  • 污点(Taint)是"节点贴的拒绝标签":我拒绝什么样的 Pod。
  • 容忍(Toleration)是"Pod 持有的通行证":我能忍受什么样的节点。
  • 调度规则:节点有污点 → 没有对应容忍的 Pod 不能调度上来;有对应容忍的 Pod 可以调度上来(但不保证一定调度上来——那是亲和性 NodeAffinity 的职责)。