Pod 调度是一个内部过程,它确定将新的 Pod 放置到集群内的节点上。
调度程序代码具有清晰的分离,它监视新创建的 Pod 并识别最合适的节点来托管它们。然后,它使用主 API 为 Pod 创建绑定(Pod 到节点的绑定)。
OpenShift Dedicated 带有一个默认调度器,可以满足大多数用户的需求。默认调度器使用固有工具和自定义工具来确定 Pod 的最佳匹配。
如果您希望更精细地控制新 Pod 的放置位置,OpenShift Dedicated 高级调度功能允许您配置 Pod,以便 Pod 需要或优先在特定节点上运行或与特定 Pod 一起运行。
您可以使用以下调度功能来控制 Pod 的放置
默认的 OpenShift Dedicated Pod 调度器负责确定将新的 Pod 放置到集群内的节点上。它从 Pod 读取数据,并根据配置的配置文件查找合适的节点。它是完全独立的,并作为一个独立的解决方案存在。它不会修改 Pod;它会为 Pod 创建一个绑定,将 Pod 绑定到特定节点。
现有的通用调度器是默认的平台提供的调度器 *引擎*,它通过三个步骤操作选择一个节点来托管 Pod
根据指定的约束或要求过滤可用节点。这是通过运行每个节点通过称为 *谓词* 或 *过滤器* 的过滤器函数列表来完成的。
这是通过将每个节点传递到一系列优先级或评分函数来实现的,这些函数为其分配一个 0-10 之间的分数,其中 0 表示不匹配,10 表示非常匹配以托管 Pod。调度程序配置还可以为每个评分函数接收一个简单的权重(正数值)。每个评分函数提供的节点分数乘以权重(大多数分数的默认权重为 1),然后通过添加所有分数为每个节点提供的分数来组合。管理员可以使用此权重属性来赋予某些分数更高的重要性。
根据节点分数对节点进行排序,并选择分数最高的节点来托管 Pod。如果多个节点具有相同的高分,则随机选择其中一个。
OpenShift Dedicated 中调度的重要用例之一是支持灵活的亲和性和反亲和性策略。
管理员应该能够配置调度程序以在任何拓扑级别甚至多个级别指定亲和性。特定级别的亲和性表示属于同一服务的全部 Pod 都调度到属于同一级别的节点上。这通过允许管理员确保对等 Pod 不会在地理位置上过于分散来处理应用程序的任何延迟要求。如果同一亲和性组内没有可用的节点来托管 Pod,则不会调度该 Pod。
如果您需要更精细地控制 Pod 调度的位置,请参阅使用节点亲和性规则控制 Pod 在节点上的放置和使用亲和性和反亲和性规则相对于其他 Pod 安排 Pod。
这些高级调度功能允许管理员指定可以在哪个节点上调度 Pod,以及强制或拒绝相对于其他 Pod 的调度。
管理员应该能够配置调度程序以在任何拓扑级别甚至多个级别指定反亲和性。特定级别的反亲和性(或“分散”)表示属于同一服务的全部 Pod 都分散在属于该级别的节点上。这确保了应用程序为了高可用性而得到良好分散。调度程序尝试尽可能均匀地跨所有适用节点平衡服务 Pod。
如果您需要更精细地控制 Pod 调度的位置,请参阅使用节点亲和性规则控制 Pod 在节点上的放置和使用亲和性和反亲和性规则相对于其他 Pod 安排 Pod。
这些高级调度功能允许管理员指定可以在哪个节点上调度 Pod,以及强制或拒绝相对于其他 Pod 的调度。