k8s 污点(Taint) 和容忍度(Toleration)使用
💡
原文中文,约3800字,阅读约需9分钟。
📝
内容提要
Kubernetes 的污点和容忍度机制用于控制 Pod 的调度。污点标记节点特性,阻止不匹配的 Pod 调度;容忍度允许 Pod 忽略污点。污点有三种效果:NoSchedule、PreferNoSchedule 和 NoExecute。配置时需确保污点与容忍度匹配,以避免调度问题。
🎯
关键要点
- Kubernetes 的污点和容忍度机制用于控制 Pod 的调度。
- 污点标记节点特性,阻止不匹配的 Pod 调度。
- 容忍度允许 Pod 忽略污点。
- 污点有三种效果:NoSchedule、PreferNoSchedule 和 NoExecute。
- 配置时需确保污点与容忍度匹配,以避免调度问题。
- 污点包含三个部分:key、value 和 effect。
- 容忍度包含四个部分:key、operator、value 和 effect。
- 使用场景包括专用节点、节点维护、隔离敏感数据和资源隔离。
- 添加污点的命令示例:kubectl taint nodes <node-name> key1=value1:NoSchedule。
- 定义容忍度的 YAML 示例提供了如何配置 Pod 的容忍度。
- 注意事项包括污点和容忍度必须完全匹配,先添加污点再创建 Pod。
- 多个污点时,Pod 的容忍度必须满足所有污点才能调度成功。
- NoExecute 效果的污点会立即驱逐不容忍的 Pod。
- tolerationSeconds 字段可指定 Pod 在添加污点后保持绑定的时间。
- 示例展示了如何配置 Pod 的容忍度以匹配多个污点。
❓
延伸问答
Kubernetes 的污点和容忍度有什么作用?
污点和容忍度用于控制 Pod 的调度,标记节点特性并允许特定 Pod 忽略这些标记。
污点的三种效果是什么?
污点的三种效果是 NoSchedule、PreferNoSchedule 和 NoExecute。
如何添加污点到节点?
使用命令 kubectl taint nodes <node-name> key1=value1:NoSchedule 来添加污点。
容忍度的组成部分有哪些?
容忍度包含四个部分:key、operator、value 和 effect。
如果节点有多个污点,Pod 的容忍度需要满足什么条件?
Pod 的容忍度必须满足所有污点才能成功调度到该节点。
NoExecute 效果的污点会有什么后果?
NoExecute 效果的污点会立即驱逐不容忍的 Pod,并阻止新的 Pod 调度到该节点。
➡️