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