自定义调度器kube-scheduler参数

通过修改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及以上

操作步骤

  1. 登录容器服务管理控制台,在左侧导航栏选择集群

  2. 集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 组件管理

  3. 核心组件页签区域,定位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:支持cpumemory两种类型。

    • threshold:[0,100]。

    默认值为空,即不开启筛选功能。

    • resourceName:cpu

    • threshold:80

    loadAwareResourceWeight

    对应节点排序策略,表示资源类型对应的打分权重。需要勾选Pod 调度时启用负载感知调度能力

    由资源名resourceName和权重resourceWeight组成的列表。

    • resourceName:使用schema进行校验,仅支持cpumemory

    • resourceWeight:整数,取值范围为[1,100]。

    • cpu=1

    • memory=1

    loadAwareAggregatedUsageAggregationType

    负载统计值的聚合类型。各类型具体含义为:

    • avg:平均值。

    • p50:50%分位值,即中位数。

    • p90p95p99:分别表示90%、95%、99%分位值。

    enum

    • avg

    • p50

    • p90

    • p95

    • p99

    avg

    featureGates

    调度器启用的特性门控。各个版本支持的特性门控请参见Kubernetes官方文档kube-scheduler

    string

    不涉及。

    与Kubernetes社区特性门控保持一致。

下文示例介绍自定义参数的使用方法。

Binpack自定义参数

Binpack策略与Spread策略对比

维度

Binpack策略

Spread策略

调度策略

  • 优先将Pod调度到资源消耗较多的节点上。

  • 多个Pod会优先共享使用同一节点。

  • 优先将Pod调度到资源消耗最少的节点上。

  • 多个Pod会尽量分散使用不同节点。

特点

减少节点上的资源碎片。

  • Kubernetes默认开启的资源调度策略是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

  • scoringStrategy:resources中的nameweight代表了不同资源在进行Binpack时的相对重要程度。

  • scoringStrategy:resources中的nameweight对应控制台的resourceNameresourceWeight

如果您开启了Pod 调度时启用优先集中放置策略,而没有在binpackResourceWeight配置任何resourceName以及resourceWeight时,系统会以CPU和Memory进行Binpack的默认设置,此时Binpack策略与以下设置的效果相同。

cpu

相关文档

推荐您启用负载感知调度功能,根据节点的真实资源用量(而不是已申请的资源量)完成节点的调度,请参见使用负载感知调度