【问题标题】:Kubernetes - Enable automatic pod rescheduling on taint/tolerationKubernetes - 在 taint/toleration 上启用自动 pod 重新调度
【发布时间】:2019-09-17 16:45:15
【问题描述】:

在以下场景中:

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

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

【问题讨论】:

    标签: kubernetes kubernetes-pod


    【解决方案1】:

    可能不会,除非你:

    • 将nodeB的污点更改为NoExecute(可能已经设置好了):

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

    即:

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

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

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

    如果这不可能,那么使用Node Affinity 可能会有所帮助(但这与污点不同)

    【讨论】:

    • 谢谢!所以最后,如果一个新节点更好地匹配 taints/toleration,就不会自动驱逐 pod?
    • @Arkon 如果多个污点按照文档指定的方式工作,则不会:它会忽略 pod 具有匹配容忍度的那些。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 2021-01-23
    相关资源
    最近更新 更多