【发布时间】:2019-09-17 16:45:15
【问题描述】:
在以下场景中:
- Pod X 可以容忍污点
- 但是具有这种污点的节点 A 不存在
- 同时,Pod X 被安排在不同的节点 B 上
- 具有适当污点的节点 A 变为就绪
这里,Kubernetes 不会触发节点 A 上 pod X 的自动重新调度,因为它在节点 B 上正常运行。有没有办法启用对节点 A 的自动重新调度?
【问题讨论】:
在以下场景中:
这里,Kubernetes 不会触发节点 A 上 pod X 的自动重新调度,因为它在节点 B 上正常运行。有没有办法启用对节点 A 的自动重新调度?
【问题讨论】:
可能不会,除非你:
nodeB的污点更改为NoExecute(可能已经设置好了):NoExecute - pod 将被逐出节点(如果它已经在节点上运行),并且不会被调度到节点上(如果它还没有在节点上运行)。
即:
您可以在同一个节点上放置多个污点,并在同一个 pod 上放置多个容忍度。
Kubernetes 处理多个 taints 和 toleration 的方式就像一个过滤器:从节点的所有 taint 开始,然后忽略 pod 具有匹配 toleration 的那些;剩余的未被忽略的污点对 pod 有指定的影响。特别是,
如果至少有一个未忽略的污点具有 NoSchedule 效果,那么 Kubernetes 不会将 pod 调度到该节点上
如果这不可能,那么使用Node Affinity 可能会有所帮助(但这与污点不同)
【讨论】: