16.9. 高级调度和 Pod 关联性和反关联性
16.9.1. 概述
通过 pod 关联性和 pod 反关联性,您可以指定有关如何将 pod 放置到其他 pod 的规则。规则使用 节点上的自定义标签和 pod 中指定的选择器来定义。pod 关联性/反关联性允许 pod 为其可以放置的一组 pod 指定关联性(或反关联性)。节点对放置没有控制权。
例如,您可以使用关联性规则,在服务内或相对于其他服务中的 pod 来分散或聚拢 pod。如果特定服务的 pod 的性能已知会受到另一服务的 pod 影响,那么您可以利用反关联性规则,防止前一服务的 pod 调度到与后一服务的 pod 相同的节点上。或者,您可以将服务的 pod 分散到不同的节点或可用区间,以减少关联的故障。
pod 关联性/反关联性允许您根据其他 pod 上的标签限制 pod 有资格调度到哪些节点。标签 是一个键/值对。
- 如果新 pod 上的标签选择器与当前 pod 上的标签匹配,pod 关联性可以命令调度程序将新 pod 放置到与其他 pod 相同的节点上。
- 如果新 pod 上的标签选择器与当前 pod 上的标签匹配,pod 反关联性可以阻止调度程序将新 pod 放置到与具有相同标签的 pod 相同的节点上。
pod 关联性规则有两种,即必要规则和偏好规则。
必须满足必要规则,pod 才能调度到节点上。偏好规则指定在满足规则时调度程序会尝试强制执行规则,但不保证一定能强制执行成功。
根据 pod 优先级和抢占 设置,调度程序可能无法在不违反关联性要求的情况下为 pod 查找适当的节点。若是如此,pod 可能不会被调度。
要防止这种情况,请仔细配置优先级相同的 pod 的 pod 关联性。