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 调度到该节点。

➡️

继续阅读