全部產品
Search
文件中心

Container Compute Service:使用自訂調度器

更新時間:Nov 14, 2025

ACS叢集中內建了預設調度器,Pod提交到叢集後預設會使用名稱為default-scheduler的調度器分配資源。為了滿足特殊類型資源的調度和複雜的調度策略,ACS叢集支援Pod使用自訂調度器。本文介紹在ACS叢集中使用自訂調度器的方式和約束條件。

前提條件

  • Pod計算類型為高效能網路GPU型(gpu-hpn)

  • 已安裝acs-virtual-node組件,版本為v2.12.0-acs.8及以上。

  • 已安裝調度器組件kube-scheduler,且版本滿足以下要求。

    ACS叢集版本

    支援配置自訂調度器的kube-scheduler版本

    1.32及以上

    所有版本均可支援。

    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。詳細操作,請參見Specify schedulers for pods

注意事項

不同計算類型的Pod在ACS叢集使用的節點類型不同,對於使用普通虛擬節點的Pod類型,ACS不支援其配置自訂調度器,具體如下。

計算類型

對應節點類型

使用自訂調度器

通用型

普通虛擬節點

不支援

效能型

GPU型

GPU-HPN型

GPU-HPN預留節點

支援

操作步驟

步驟一:在ACS叢集中部署自訂調度器

參考Kubernetes文檔,在叢集中部署自訂調度器。

步驟二:修改ACS調度器配置

  1. 登入容器計算服務控制台,在左側導覽列選擇集群列表

  2. 集群列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇运维管理组件管理

  3. 在組件管理頁面,定位Kube Scheduler,然後在Kube Scheduler卡片中單擊配置

  4. 在對話方塊中勾選開啟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配置自訂調度器

  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

常見問題

當Pod使用PVC資源時,在自訂調度器調度過程中出現了Insufficient attachable-volumes-xxx資源不足的提示

該問題在Kubernetes社區預設調度器中不會出現。原因在於某些自訂調度器在處理PVC資源時,會強制要求節點的CSI Node對象必須存在,或已上報對應CSI驅動的容量資訊。若節點未滿足上述條件,調度器會強制判定為資源不足。

解決方案可以通過配置調度器忽略特定CSI驅動。以Volcano調度器為例,可在啟動參數中添加--ignored-provisioners=${csi-driver-name},例如:

# 支援配置多個,使用逗號分隔
--ignored-provisioners=povplugin.csi.alibabacloud.com

請根據實際使用的CSI驅動名稱調整配置參數。