首页 > 解决方案 > Kubernetes - 在污点/容忍度上启用自动 pod 重新调度

问题描述

在以下场景中:

  1. Pod X 可以容忍污点
  2. 但是具有这种污点的节点 A 不存在
  3. 同时,Pod X 被安排在不同的节点 B 上
  4. 具有适当污点的节点 A 变为就绪

在这里,Kubernetes 不会触发节点 A 上的 pod X 的自动重新调度,因为它在节点 B 上正常运行。有没有办法启用对节点 A 的自动重新调度?

标签: kuberneteskubernetes-pod

解决方案


在本地,可能不会,除非您:

  • 将 taint 更改nodeBNoExecute(可能已经设置):

NoExecute - pod 将被逐出节点(如果它已经在节点上运行),并且不会被调度到节点上(如果它还没有在节点上运行)。

那是:

您可以在同一个节点上放置多个污点,在同一个 pod上放置多个容忍度。

Kubernetes 处理多个 taints 和 toleration 的方式就像一个过滤器:从节点的所有 taint 开始,然后忽略 pod 具有匹配 toleration 的那些;剩余的未被忽略的污点对 pod 有指定的影响。尤其是,

如果至少有一个未忽略的污点具有 NoSchedule 效果,则 Kubernetes 不会将 pod 调度到该节点上

如果这是不可能的,那么使用节点关联可能会有所帮助(但这与污点不同)


推荐阅读