すべてのプロダクト
Search
ドキュメントセンター

Container Compute Service:カスタムスケジューラの使用

最終更新日:Mar 26, 2026

ACS クラスターには、すべての Pod にリソースを割り当てる組み込みの default-scheduler が含まれています。ギャングスケジューリングやトポロジーを考慮した配置など、複雑なスケジューリングポリシーを必要とする GPU-HPN ワークロードの場合、カスタムスケジューラ (例: Koordinator や Volcano) をデプロイし、ACS がそれを使用するように設定できます。

カスタムスケジューラは、GPU-HPN Pod のみにサポートされています。その他のすべてのコンピューティングタイプは通常の仮想ノードを使用し、カスタムスケジューラをサポートしていません。

前提条件

開始する前に、以下を確認してください。

  • コンピューティングタイプが High-Performance Network GPU (gpu-hpn) に設定された Pod

  • バージョン v2.12.0-acs.8 以降の acs-virtual-node アドオンがインストールされていること

  • カスタムスケジューラをサポートするバージョンの kube-scheduler コンポーネントがインストールされていること:

    ACS クラスターバージョン最小 kube-scheduler バージョン
    1.32 以降すべてのバージョンがサポートされています
    1.31v1.31.0-aliyun-1.1.2 以降
    1.30v1.30.3-aliyun-1.1.2 以降
    1.28v1.28.9-aliyun-1.1.2 以降
GPU-HPN Pod にカスタムスケジューラを使用する場合、各 Pod の spec.schedulerName フィールドを設定します。詳細については、「Pod のスケジューラを指定する」をご参照ください。

注意事項

カスタムスケジューラを有効にすると、ACS が GPU-HPN Pod とノードを処理する方法が変わります。続行する前に、動作の違いを確認してください。

側面デフォルトスケジューラ (無効)カスタムスケジューラ (有効)
Pod スケジューラ名カスタマイズ不可。Pod を送信すると、spec.schedulerNamedefault-scheduler に上書きされます。カスタマイズ可能。送信後も spec.schedulerName は保持され、任意の値に設定できます。
Pod スケジューリングプロセスACS デフォルトスケジューラは、すべての Pod にリソースを割り当てます。ACS デフォルトスケジューラは、spec.schedulerNamedefault-scheduler である Pod のみを処理します。その他のすべての Pod は、カスタムスケジューラによって処理されます。
GPU-HPN ノードラベルと Taint 制約ノードラベル、アノテーション、Taint の追加、変更、削除は、ACS の制約に従います。詳細については、「ノードラベルと Taint の管理」をご参照ください。ノードラベル、アノテーション、Taint の制約は適用されなくなります。
Pod アフィニティスケジューリング制約アフィニティフィールド設定は、ACS の制約に従います。詳細については、「ノードアフィニティスケジューリング」をご参照ください。アフィニティフィールドの制約は適用されなくなります。
重要

これらの変更は、GPU-HPN Pod とノードにのみ適用されます。その他のコンピューティングタイプはカスタムスケジューラをサポートしていません。

カスタムスケジューラのデプロイと設定

ステップ 1: カスタムスケジューラのデプロイ

ACS クラスターにカスタムスケジューラをデプロイします。必要な ServiceAccount および ClusterRoleBinding の設定を含む完全な例については、「Kubernetes ドキュメント」をご参照ください。

ステップ 2: ACS でカスタムスケジューラを有効にする

  1. ACS コンソール」にログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. [クラスター] ページで、対象のクラスターの ID をクリックします。左側のナビゲーションウィンドウで、[操作] > [アドオン] を選択します。

  3. アドオン]ページで、[Kube Scheduler]カードを見つけて、[設定]をクリックします。

  4. ダイアログボックスで、[カスタムラベルおよびGPU-HPN ノード用スケジューラの有効化] を選択し、[OK] をクリックします。

ステップ 3: Pod のカスタムスケジューラを設定する

  1. dep-with-koordinator.yaml という名前のファイルを次の内容で作成します。この Deployment は、Pod テンプレートに alibabacloud.com/compute-class: gpu-hpn を設定し、koord-scheduler をスケジューラとして割り当てます。koord-scheduler をステップ 1 で設定した名前に置き換えます。

    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
            # コンピューティングクラスを 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
          # スケジューラ名をステップ 1 でデプロイしたものと一致させます。
          schedulerName: koord-scheduler
  2. Deployment をクラスターに適用します。

    kubectl apply -f dep-with-koordinator.yaml
  3. Pod がカスタムスケジューラを使用していることを検証します。

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

    期待される出力:

    NAME                               schedulerName
    dep-with-koordinator-xxxxx-xxxxx   koord-scheduler

よくある質問

Pod がカスタムスケジューラで PVC を使用すると、「Insufficient attachable-volumes-xxx」エラーが発生するのはなぜですか?

一部のカスタムスケジューラでは、ノードの Container Storage Interface (CSI) Node オブジェクトが存在し、対応する CSI ドライバーの容量情報が報告されている必要があります。この条件が満たされない場合、デフォルトの Kubernetes スケジューラがこのケースを自動的に処理するにもかかわらず、スケジューラはリソース不足エラーを報告します。

特定の CSI ドライバーを無視するようにカスタムスケジューラを設定します。Volcano スケジューラの場合、起動時に --ignored-provisioners フラグを追加します。

# 複数のドライバーをコンマで区切ります。
--ignored-provisioners=povplugin.csi.alibabacloud.com

クラスター内の CSI ドライバーと一致するようにドライバー名を調整してください。