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-HPN型Pod使用自定义调度器时,需要在Pod上配置
spec.schedulerName
。详细操作,请参见为Pod指定调度器。
注意事项
不同计算类型的Pod在ACS集群使用的节点类型不同,对于使用普通虚拟节点的Pod类型,ACS不支持其配置自定义调度器,具体如下。
计算类型 | 对应节点类型 | 使用自定义调度器 |
计算类型 | 对应节点类型 | 使用自定义调度器 |
通用型 | 普通虚拟节点 | 不支持 |
性能型 | ||
GPU型 | ||
GPU-HPN型 | GPU-HPN预留节点 | 支持 |
操作步骤
步骤一:在ACS集群中部署自定义调度器
参考Kubernetes文档,在集群中部署自定义调度器。
步骤二:修改ACS调度器配置
登录容器计算服务控制台,在左侧导航栏选择集群列表。
在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择运维管理 > 组件管理。
在组件管理页面,定位Kube Scheduler,然后在Kube Scheduler卡片中单击配置。
在对话框中勾选开启GPU-HPN节点自定义标签、调度器配置,然后单击确定。
该配置项开启或关闭时,对Pod和Node的使用效果如下。
仅适用于GPU-HPN型Pod和Node,其他计算类型的Pod不支持使用自定义调度器。
使用默认调度器(配置关闭)
使用自定义调度器(配置开启)
使用默认调度器(配置关闭)
使用自定义调度器(配置开启)
Pod调度器名称
不支持自定义,Pod提交后
spec.schedulerName
字段会被覆盖为default-scheduler。支持自定义,Pod的
spec.schedulerName
可以配置为任意字段,提交后不会被修改。Pod调度过程
所有Pod都由ACS默认调度器负责分配资源。
ACS默认调度器仅调度
spec.schedulerName
为default-scheduler的Pod,其他Pod由自定义调度器负责分配资源。GPU-HPN类型Node标记约束
节点Label、Annotation、Taint的增加、修改和删除操作会受到ACS等配置约束。详细内容,请参见节点标签和污点管理。
节点Label、Annotation、Taint的增加、修改和删除操作不再受到ACS等配置约束。
Pod亲和性调度约束
亲和性字段配置会受到ACS的配置约束。详细内容,请参见节点亲和性调度。
亲和性字段配置不再受到ACS的配置约束。
步骤三:为Pod配置自定义调度器
使用以下内容,创建名称为
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
使用以下命令,将Pod提交到ACS集群。
kubectl apply -f dep-with-koordinator.yaml
使用以下命令,查看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配置自定义调度器