3.2.3.2. 了解调度程序优先级
优先级是根据偏好对节点进行排序的规则。
可以指定一组自定义优先级来配置调度程序。OpenShift Container Platform 中默认提供一些优先级。也可通过提供某些参数来自定义其他优先级。可将多个优先级合并,并为每个优先级赋予不同的权重来影响优先顺序。
3.2.3.2.1. 静态优先级
静态优先级不使用用户提供的配置参数,但权重除外。权重必须指定,且不能为 0 或负数。
这些是在 openshift-config
项目中的调度程序策略配置映射中指定的。
3.2.3.2.1.1. 默认优先级
默认调度程序策略包括以下优先级。每个优先级函数的权重为 1
,但 NodePreferAvoidPodsPriority
除外,它的权重是 10000
。
NodeAffinityPriority
优先级根据节点关联性调度偏好来排列节点的优先顺序
{"name" : "NodeAffinityPriority", "weight" : 1}
TaintTolerationPriority
优先级为 pod 优先选择那些在节点上具有较少 intolerable(不可容忍)污点的节点。不可容忍的污点是具有 PreferNoSchedule
键的污点。
{"name" : "TaintTolerationPriority", "weight" : 1}
ImageLocalityPriority
优先级优先选择已请求的 pod 容器镜像的节点。
{"name" : "ImageLocalityPriority", "weight" : 1}
SelectorSpreadPriority
优先级查找服务、复制控制器(RC)、复制集(RS)和与 pod 匹配的有状态的设置,然后找到与这些选择器匹配的现有 pod。调度程序优先选择具有较少现有匹配 pod 的节点。然后,它会将 pod 调度到具有与所调度 pod 的选择器匹配的 pod 数量最少的节点上。
{"name" : "SelectorSpreadPriority", "weight" : 1}
InterPodAffinityPriority
计算迭代 weightedPodAffinityTerm
元素,并在节点满足对应的 PodAffinityTerm 时加上权重的总和。总和最高的节点是优先级最高的节点。
{"name" : "InterPodAffinityPriority", "weight" : 1}
LeastRequestedPriority
优先级会优先选择请求资源较少的节点。它计算节点上调度的 pod 所请求的内存和 CPU 百分比,并优先选择可用/剩余容量最高的节点。
{"name" : "LeastRequestedPriority", "weight" : 1}
BalancedResourceAllocation
优先级会优先选择资源使用率均衡的节点。它以占容量比形式计算 CPU 和内存已使用量的差值,并基于两个指标相互接近的程度来优先选择节点。这应该始终与 LeastRequestedPriority
一同使用。
{"name" : "BalancedResourceAllocation", "weight" : 1}
NodePreferAvoidPodsPriority
优先级忽略复制控制器以外的控制器拥有的 pod。
{"name" : "NodePreferAvoidPodsPriority", "weight" : 10000}
3.2.3.2.1.2. 其他静态优先级
OpenShift Container Platform 还支持下列优先级:
如果没有提供优先级配置,则会为所有节点都提供一个权重为 1
优先级。建议您仅在测试环境中使用此优先级。
的
EqualPriority
{"name" : "EqualPriority", "weight" : 1}
MostRequestedPriority
优先级会优先选择具有最多请求资源的节点。它计算节点上调度的 pod 所请求的内存与 CPU 百分比,并根据请求量对容量的平均占比的最大值来排列优先级。
{"name" : "MostRequestedPriority", "weight" : 1}
ServiceSpreadingPriority
优先级通过将属于同一服务的 pod 数量最大化到同一台机器来分散 pod。
{"name" : "ServiceSpreadingPriority", "weight" : 1}