主题
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 的职责)。