使用自定义调度器

更新时间:2025-04-01 06:54:32

ACS集群中自带了默认调度器,Pod提交到集群后默认会使用名称为default-scheduler的调度器分配资源。为了满足特殊类型资源的调度和复杂的调度策略,ACS集群支持Pod使用自定义调度器。本文介绍在ACS集群中使用自定义调度器的方式和约束条件。

前提条件

  • Pod计算类型为高性能网络GPU型(gpu-hpn)

  • 已安装acs-virtual-node组件,版本为v2.12.0-acs.8及以上。

  • 已安装调度器组件kube-scheduler,且版本满足以下要求。

    ACS集群版本

    支持配置自定义调度器的kube-scheduler版本

    ACS集群版本

    支持配置自定义调度器的kube-scheduler版本

    1.31

    v1.31.0-aliyun-1.1.2及以上。

    1.30

    v1.30.3-aliyun-1.1.2及以上。

    1.28

    v1.28.9-aliyun-1.1.2及以上。

    说明

    GPU-HPNPod使用自定义调度器时,需要在Pod上配置spec.schedulerName。详细操作,请参见Pod指定调度器

注意事项

不同计算类型的PodACS集群使用的节点类型不同,对于使用普通虚拟节点的Pod类型,ACS不支持其配置自定义调度器,具体如下。

计算类型

对应节点类型

使用自定义调度器

计算类型

对应节点类型

使用自定义调度器

通用型

普通虚拟节点

不支持

性能型

GPU

GPU-HPN

GPU-HPN预留节点

支持

操作步骤

步骤一:在ACS集群中部署自定义调度器

参考Kubernetes文档,在集群中部署自定义调度器。

步骤二:修改ACS调度器配置

  1. 登录容器计算服务控制台,在左侧导航栏选择集群列表

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

  3. 在组件管理页面,定位Kube Scheduler,然后在Kube Scheduler卡片中单击配置

  4. 在对话框中勾选开启GPU-HPN节点自定义标签、调度器配置,然后单击确定

    该配置项开启或关闭时,对PodNode的使用效果如下。

    说明

    仅适用于GPU-HPNPodNode,其他计算类型的Pod不支持使用自定义调度器。

    使用默认调度器(配置关闭)

    使用自定义调度器(配置开启)

    使用默认调度器(配置关闭)

    使用自定义调度器(配置开启)

    Pod调度器名称

    不支持自定义,Pod提交后spec.schedulerName字段会被覆盖为default-scheduler。

    支持自定义,Podspec.schedulerName可以配置为任意字段,提交后不会被修改。

    Pod调度过程

    所有Pod都由ACS默认调度器负责分配资源。

    ACS默认调度器仅调度spec.schedulerNamedefault-schedulerPod,其他Pod由自定义调度器负责分配资源。

    GPU-HPN类型Node标记约束

    节点Label、Annotation、Taint的增加、修改和删除操作会受到ACS等配置约束。详细内容,请参见节点标签和污点管理

    节点Label、Annotation、Taint的增加、修改和删除操作不再受到ACS等配置约束。

    Pod亲和性调度约束

    亲和性字段配置会受到ACS的配置约束。详细内容,请参见节点亲和性调度

    亲和性字段配置不再受到ACS的配置约束。

步骤三:为Pod配置自定义调度器

  1. 使用以下内容,创建名称为dep-with-koordinator.yaml的文件,文件中描述了一个Deployment应用,Pod模板中指定了名称为koord-scheduler的自定义调度器。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: dep-with-koordinator
      labels:
        app: dep-with-koordinator
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: dep-with-koordinator
      template:
        metadata:
          labels:
            app: dep-with-koordinator
            # 指定compute class为gpu-hpn,其他计算类不支持自定义调度器
            alibabacloud.com/compute-class: gpu-hpn
        spec:
          containers:
          - name: demo
            image: registry.cn-hangzhou-finance.aliyuncs.com/acs/stress:v1.0.4
            command:
            - "sleep"
            - "infinity"
          restartPolicy: Always
          # 指定调度器名称为koord-scheduler,具体名称应与步骤一部署配置一致
          schedulerName: koord-scheduler
  2. 使用以下命令,将Pod提交到ACS集群。

    kubectl apply -f dep-with-koordinator.yaml
  3. 使用以下命令,查看Pod配置的schedulerName

    kubectl get pod -lapp=dep-with-koordinator -o custom-columns=NAME:.metadata.name,schedulerName:.spec.schedulerName

    预期输出:

    # pod指定了名称为koord-scheduler的自定义调度器
    NAME                               schedulerName
    dep-with-koordinator-xxxxx-xxxxx   koord-scheduler

  • 本页导读 (0)
  • 前提条件
  • 注意事项
  • 操作步骤
  • 步骤一:在ACS集群中部署自定义调度器
  • 步骤二:修改ACS调度器配置
  • 步骤三:为Pod配置自定义调度器
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等