16.2.5.3. 可配置 predicates
您可以在调度程序配置中配置这些 predicates,默认为 /etc/origin/master/scheduler.json,添加可影响 predicate 函数的标签。
由于它们是可配置的,因此可以组合相同类型的多个谓词(但配置参数不同),只要其用户定义的名称不同。
有关使用这些优先级的详情,请参考修改调度程序策略。
serviceAffinity 根据该 pod 上运行的服务将 pod 放置到节点上。将同一服务的 pod 放置到相同或共同定位的节点上可提高效率。
此 predicate 会尝试在其 节点选择器 中将带有特定标签的 pod 放置到具有相同标签的节点。
如果 pod 没有在其节点选择器中指定标签,则第一个 pod 会根据可用性放置到任何节点上,服务的所有后续 pod 都会调度到具有与该节点相同标签值的节点上。
"predicates":[ { "name":"<name>", 1 "argument":{ "serviceAffinity":{ "labels":[ "<label>" 2 ] } } } ],
例如:
"name":"ZoneAffinity", "argument":{ "serviceAffinity":{ "labels":[ "rack" ] } }
例如,如果服务的第一个 pod 具有节点选择器 rack
被调度到一个带有 region=rack
标签的节点,则属于同一服务的所有其他后续 pod 都将被调度到具有相同 region=rack
标签的节点。如需更多信息,请参阅 控制 Pod 放置。
也支持多级标签。用户也可以指定服务要调度到同一地区内、同一区域(位于区域下)的所有 pod。
labelsPresence
参数检查特定节点是否具有特定的标签。标签创建 LabelPreference
优先级使用的节点 组。例如,通过标签匹配非常有用,其中节点具有按标签定义的物理位置或状态。
"predicates":[ { "name":"<name>", 1 "argument":{ "labelsPresence":{ "labels":[ "<label>" 2 ], "presence": true 3 } } } ],
例如:
"name":"RackPreferred", "argument":{ "labelsPresence":{ "labels":[ "rack", "region" ], "presence": true } }