配备了特殊硬件的节点

在部分节点配备了特殊硬件(比如 GPU)的集群中, 我们希望不需要这类硬件的 Pod 不要被调度到这些特殊节点,以便为后继需要这类硬件的 Pod 保留资源。

要达到这个目的,可以先给配备了特殊硬件的节点添加污点

kubectl taint nodes nodename special=true:NoSchedule

或者:

kubectl taint nodes nodename special=true:PreferNoSchedule

然后给使用了这类特殊硬件的 Pod 添加一个相匹配的容忍度。和专用节点的例子类似,添加这个容忍度的最简单的方法是使用自定义准入控制器。 比如,我们推荐使用扩展资源来表示特殊硬件,给配置了特殊硬件的节点添加污点时包含扩展资源名称, 然后运行一个ExtendedResourceToleration准入控制器。此时,因为节点已经被设置污点了,没有对应容忍度的 Pod 不会被调度到这些节点。

但当你创建一个使用了扩展资源的 Pod 时,ExtendedResourceToleration准入控制器会自动给 Pod 加上正确的容忍度,这样 Pod 就会被自动调度到这些配置了特殊硬件的节点上。 这种方式能够确保配置了特殊硬件的节点专门用于运行需要这些硬件的 Pod, 并且你无需手动给这些 Pod 添加容忍度。

最后更新于