什么是 Kubernetes 的污点与容忍度?

来源:这里教程网 时间:2026-02-21 17:26:57 作者:

Kubernetes 的污点(Taints)与容忍度(Tolerations)是用于控制 Pod 调度行为的机制,它们决定了哪些 Pod 可以被调度到特定节点上。

污点(Taints):限制节点的调度能力

污点是设置在节点上的属性,用来“排斥”某些 Pod。只有具备相应容忍度的 Pod 才能被调度到带有污点的节点上。

一个污点由三部分组成:keyvalueeffect。常见的 effect 包括:

NoSchedule:不允许新 Pod 调度到该节点(已运行的不受影响) PreferNoSchedule:尽量不调度,但不是强制 NoExecute:不仅阻止调度,还会驱逐节点上已运行的不匹配 Pod

例如,给节点标记为专用用途:

kubectl taint nodes node-1 dedicated=special:NoSchedule

容忍度(Tolerations):允许 Pod 接受污点

容忍度配置在 Pod 上,表示该 Pod 可以“容忍”某些污点,从而被调度到对应节点。

只要 Pod 定义了与节点污点匹配的容忍度,调度器就会允许调度。

示例:让 Pod 能调度到上面那个节点:

tolerations:
- key: "dedicated"
  operator: "Equal"
  value: "special"
  effect: "NoSchedule"
  tolerationSeconds: 3600

这里 tolerationSeconds 表示在 NoExecute 场景下,可以容忍多长时间后才被驱逐。

常见使用场景

污点和容忍度常用于以下情况:

将关键系统组件隔离到专用节点 保留某些节点供特定团队或应用使用 节点维护期间防止新 Pod 调度(如设置 NoExecute) 混合部署环境(如 GPU 节点只允许 AI 类 Pod 调度)

基本上就这些。通过组合污点和容忍度,你可以精细控制集群中 Pod 的分布,提升资源隔离性和运维灵活性。

相关推荐