通过修改kube-scheduler的自定义参数,您可以根据需要自定义调度器的行为,使得Pod的调度更符合您的期望,例如是否使用Binpack策略、是否开启负载感知调度能力等。
前提条件
已创建1.20及以上版本的ACK集群Pro版、ACK Edge集群Pro版、ACK灵骏集群、ACK Serverless集群Pro版。如需升级集群,请参见手动升级集群。
使用限制
对于不同版本的ACK集群Pro版以及ACK Edge集群Pro版,支持自定义参数的调度器需满足如下版本要求。
当前所有已安装Kube Scheduler的ACK Serverless集群Pro版以及ACK灵骏集群均可以使用自定义参数功能。
集群版本 | 支持自定义参数的调度器版本 |
1.28及以上 | 均可支持 |
1.26 | v1.26.3-aliyun-4.1及以上 |
1.24 | v1.24.6-ack-3.1及以上 |
1.22 | v1.22.15-ack-2.0及以上 |
1.20 | v1.20.11-9.0-bcaa6001-aliyun及以上 |
操作步骤
登录容器服务管理控制台,在左侧导航栏选择集群。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择 。
在核心组件页签区域,定位kube-scheduler组件,单击卡片右下方的配置,在对话框中按照页面提示完成参数的配置。
不同版本调度器支持的功能不同,其支持的自定义参数也有所区别。关于不同版本调度器支持的功能,请参见kube-scheduler。自定义参数的含义及其用法,如下表所示。
配置项
说明
类型
取值(范围)
默认值
podMaxBackoffSeconds
Pod调度失败后回退秒数(Backoffseconds)的最大值。Pod两次调度之间的时间间隔大于配置的回退秒数。
int
[1,100000]
10
Pod 调度时启用优先集中放置策略
开启或关闭Pod调度时启用优先集中放置策略,即Binpack策略。
您可以参见下文Binpack自定义参数配置示例。
bool
false
true
false
binpackPluginWeight
Binpack插件打分时相比于其他打分插件的权重。需同时选中Pod 调度时启用优先集中放置策略。
int
[1,100000]
100
binpackResourceWeight
Binpack插件打分时各种资源所占的比重。需同时选中Pod 调度时启用优先集中放置策略。
resourceName: string
resourceWeight: int
resourceName使用schema进行校验,只允许使用字母、数字、英文半角句号(.)、正斜线(/)和短划线(-)。
resourceWeight为整数,取值范围为[1,10000]。
cpu:1
memory:1
scorePluginWeights
打分时各种插件的权重。
说明NodeResourceFit插件权重与Binpack插件权重冲突。当勾选了Pod 调度时启用优先集中放置策略后,该项配置中请勿配置NodeResourceFit插件的权重。
plugin: string
weight: int
plugin仅支持使用开放的插件列表。
weight为整数,取值范围为[1,10000]。
plugin: NodeAffinity
weight: 100
connectionQPS
与API Server通信的每秒最大请求次数。
int
[1,1000]
50
connectionBurst
与API Server通信过程中,在客户端超出速率限制时,允许累积的额外查询个数。
int
[1,1000]
100
percentageOfNodesToScore
调度时评估的可运行节点的比例。
默认值为0,表示调度器会使用默认节点数百分比(基于集群规模确定的值,位于5%到50%之间)执行打分操作。
int
[0,100]
0
开启共享 GPU 插件的打分功能
在使用共享GPU能力(共享GPU调度需要开通AI套件使用)时,调度GPU Pod时优先选择显存申请量及算力申请量更高的GPU。
bool
false
true
true
Pod 调度时启用负载感知调度能力
开启负载感知调度能力,需要安装ack-koordinator组件。
bool
false
true
false
loadAwareThreshold
对应节点筛选策略,表示资源类型对应的阈值。需要勾选Pod 调度时启用负载感知调度能力 。
由资源名resourceName和权重threshold组成的列表。
resourceName:支持cpu和memory两种类型。
threshold:[0,100]。
默认值为空,即不开启筛选功能。
resourceName:cpu
threshold:80
loadAwareResourceWeight
对应节点排序策略,表示资源类型对应的打分权重。需要勾选Pod 调度时启用负载感知调度能力 。
由资源名resourceName和权重resourceWeight组成的列表。
resourceName:使用schema进行校验,仅支持
cpu
或memory
。resourceWeight:整数,取值范围为[1,100]。
cpu=1
memory=1
loadAwareAggregatedUsageAggregationType
负载统计值的聚合类型。各类型具体含义为:
avg:平均值。
p50:50%分位值,即中位数。
p90、p95、p99:分别表示90%、95%、99%分位值。
enum
avg
p50
p90
p95
p99
avg
featureGates
调度器启用的特性门控。各个版本支持的特性门控请参见Kubernetes官方文档kube-scheduler。
string
不涉及。
与Kubernetes社区特性门控保持一致。
下文示例介绍自定义参数的使用方法。
Binpack自定义参数
Binpack策略与Spread策略对比
维度 | Binpack策略 | Spread策略 |
调度策略 |
|
|
特点 | 减少节点上的资源碎片。 |
|
适用场景 | 提升节点利用率场景。 | 节点高可用场景。 |
使用Binpack自定义参数
您可以在Pod调度时启用Binpack策略,即开启Pod 调度时启用优先集中放置策略,并设置Binpack打分插件相比于其他打分插件的权重。权重越大,Pod调度时越可能优先调度到同一节点上。您也可以设置Binpack插件打分时参考的资源名及资源所占的权重。权重越大,Binpack插件打分时该种资源对Pod调度产生的影响越大。
您可以在组件管理页面的核心组件页签,定位kube-scheduler组件,单击配置,然后在对话框中配置Binpack相关的自定义参数。
配置项 | 示例说明 |
Pod 调度时启用优先集中放置策略 | 开启开关。 |
binpackPluginWeight | 配置Binpack的权重,一般情况下无需更改。当打开Binpack开关后没有产生效果时,可以适当调高Binpack的权重,例如200。详细信息,请参见binpack权重。 |
不同资源的Binpack策略 | 详细的配置示例,请参见Enabling bin packing using MostAllocated strategy。
|
如果您开启了Pod 调度时启用优先集中放置策略,而没有在binpackResourceWeight配置任何resourceName以及resourceWeight时,系统会以CPU和Memory进行Binpack的默认设置,此时Binpack策略与以下设置的效果相同。
相关文档
推荐您启用负载感知调度功能,根据节点的真实资源用量(而不是已申请的资源量)完成节点的调度,请参见使用负载感知调度。