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

Container Service for Kubernetes:ack-kube-queue を使用した AI/ML ワークロードの管理

最終更新日:Jun 16, 2026

クラスターリソースが解放されるまでジョブをキューに入れ、リソースの競合や GPU/CPU のアイドルによる無駄を防ぎます。

ack-kube-queue をインストールし、必要に応じて追加のジョブタイプを有効にしてから、ジョブをキューに投入します。

仕組み

ack-kube-queue は、Kubernetes ネイティブの suspend メカニズムを使用します。フィールドまたはアノテーションで suspendtrue に設定してジョブを投入すると、そのジョブはキューに入ります。ack-kube-queue はリソースの可用性を監視し、リソースが十分になると suspendfalse に設定してジョブを開始します。

サポートされるクラスタータイプ

ack-kube-queue は以下をサポートします。

  • Kubernetes 1.22 以降を実行している ACK マネージドクラスター

  • Kubernetes 1.22 以降を実行している ACK Edge クラスター

  • Kubernetes 1.22 以降を実行している ACK Lingjun クラスター

ack-kube-queue のインストール

インストール手順はクラスタータイプによって異なります。

ACK マネージドクラスターと ACK Edge クラスター

クラスターの現在の状態に応じた手順を選択します。

クラウドネイティブ AI スイートがまだインストールされていない場合

  1. クラウドネイティブ AI スイートを有効化します

  2. ACK コンソールにログインします。左側メニューで、[Clusters] をクリックします。

  3. [Clusters] ページで、対象クラスターの名前をクリックします。左側メニューで、[Applications] > [Cloud-native AI Suite] を選択します。

  4. [Cloud-native AI Suite] ページの下部で、[Deploy] をクリックします。[Scheduling] セクションで [Kube-Queue] を選択します。[Ecosystem Tools] セクションで [Kubeflow and Arena] を選択します。次に、[Deploy Cloud-native AI Suite] をクリックします。

クラウドネイティブ AI スイートがすでにインストールされている場合

  1. クラウドネイティブ AI スイートを有効化します

  2. ACK コンソールにログインします。左側メニューで、[Clusters] をクリックします。

  3. [Clusters] ページで、対象クラスターの名前をクリックします。左側メニューで、[Applications] > [Cloud-native AI Suite] を選択します。

  4. ack-arenaack-kube-queue を個別にインストールします。インストールが完了すると、[Components][Status][Deployed] と表示されます。

    • ack-arena を見つけ、[操作] 列の [Deploy] をクリックします。[Parameters] パネルで、[OK] をクリックします。

    • ack-kube-queue を見つけ、[操作] 列の [Deploy] をクリックします。パネルで、[OK] をクリックします。

ACK Lingjun クラスター

  1. ACK コンソールにログインします。左側メニューで、[Marketplace] > [Marketplace] を選択します。

  2. [Marketplace] ページで ack-kube-queue を検索し、その名前をクリックします。

  3. アプリケーション詳細ページで、[Deploy] をクリックします。[Basic Information] ステップで、[Cluster][Namespace]、および [Release Name] を設定し、[Next] をクリックします。

  4. [Parameters] ステップで、[Chart Version] を最新バージョンに設定し、[OK] をクリックします。

追加のジョブタイプの有効化

デフォルトでは、ack-kube-queue は Kubernetes ネイティブのジョブのキューイングのみを有効にします。TensorFlow ジョブ、PyTorch ジョブ、MPI ジョブ、Argo ワークフロー、Ray ジョブ、または Spark アプリケーションをキューに入れるには、各タイプを個別に有効にする必要があります。

説明

Kubernetes ネイティブのジョブをキューに入れるには、クラスターで Kubernetes 1.22 以降が実行されている必要があります。

  1. ACK コンソールにログインします。左側メニューで、[Clusters] をクリックします。

  2. [Clusters] ページで、対象クラスターの名前をクリックします。左側メニューで、[Applications] > [Helm] を選択します。

  3. ack-kube-queue を見つけ、[操作] 列の [Update] をクリックします。

  4. YAML テンプレートで、有効にするジョブタイプのパラメーターを設定します。

    パラメーター 効果
    extension.argo.enable: true Argo ワークフローの有効化
    extension.mpi.enable: true MPI ジョブの有効化
    extension.ray.enable: true Ray ジョブの有効化
    extension.spark.enable: true Spark アプリケーションの有効化
    extension.tf.enable: true TensorFlow ジョブの有効化
    extension.pytorch.enable: true PyTorch ジョブの有効化
  5. [OK] をクリックします。

ジョブの投入

サポートされている各ジョブタイプをキューに投入し、キューイングされていることを確認します。

制約事項

ジョブタイプ 制約
TensorFlow、PyTorch、MPI ack-arena が提供するオペレーターを使用する必要があります
MPI Arena 経由でのみ投入できます
Argo ワークフロー 完全なワークフローのみをキューに入れることができます。個々のワークフローステップはキューに入れることはできません。kube-queue/min-resources アノテーションでリソース要件を宣言します (「Argo ワークフロー」をご参照ください)。
Kubernetes ネイティブジョブ クラスターで Kubernetes 1.22 以降が実行されている必要があります

TensorFlow ジョブ、PyTorch ジョブ、MPI ジョブ

アノテーション scheduling.x-k8s.io/suspend: "true" をジョブマニフェストに追加します。

TensorFlow ジョブの例:

apiVersion: "kubeflow.org/v1"
kind: "TFJob"
metadata:
  name: "job1"
  annotations:
    scheduling.x-k8s.io/suspend: "true"
spec:
...

ジョブがキューイングされていることを確認します。

kubectl describe tfjob job1

キューイングされたジョブには Suspended 条件が表示されます。

Kubernetes ネイティブジョブ

spec.suspendtrue に設定します。デキューされると、ack-kube-queue はこのフィールドを false に設定し、ジョブが開始されます。

apiVersion: batch/v1
kind: Job
metadata:
  generateName: pi-
spec:
  suspend: true
...

ジョブがキューイングされていることを確認します。

kubectl get job <job-name>

キューイングされたジョブには SUSPENDED と表示されます。ack-kube-queue がジョブを許可すると、SUSPENDED がクリアされ、ジョブが開始されます。

Argo ワークフロー

前提条件:ACK コンソールの [Marketplace] から Argo Workflows をインストールしておく必要があります。

suspend タイプの kube-queue-suspend という名前のカスタムテンプレートを追加し、spec.suspendtrue に設定します。kube-queue/min-resources アノテーションでリソース要件を宣言します。

apiVersion: argoproj.io/v1alpha1
kind: Workflow
metadata:
  generateName: <workflow-name>-
  annotations:
    kube-queue/min-resources: |
      cpu: 5
      memory: 5 G
spec:
  suspend: true
  entrypoint: <entrypoint-template>
  templates:
  # 必須:kube-queue-suspend という名前の一時停止テンプレートを追加
  - name: kube-queue-suspend
    suspend: {}
  - name: <entrypoint-template>
    # ... ワークフローステップ

Spark アプリケーション

前提条件:ACK コンソールの [Marketplace] から ack-spark-operator をインストールしておく必要があります。

アノテーション scheduling.x-k8s.io/suspend: "true" を SparkApplication マニフェストに追加します。

apiVersion: sparkoperator.k8s.io/v1beta2
kind: SparkApplication
metadata:
  generateName: spark-pi-suspend-
  namespace: spark-operator
  annotations:
    scheduling.x-k8s.io/suspend: "true"
spec:
...

Ray ジョブ

前提条件:ACK コンソールの [Add-ons] ページから Kuberay-Operator をインストールしておく必要があります。詳細については、「コンポーネントの管理」をご参照ください。

spec.suspendtrue に設定します。

apiVersion: ray.io/v1
kind: RayJob
metadata:
  name: rayjob-sample
spec:
  # Suspend は、RayJob コントローラーが RayCluster インスタンスを作成するかどうかを指定します。
  # suspend フィールドを true に設定してジョブが適用された場合、RayCluster は作成されず、false への移行を待ちます。
  # RayCluster がすでに作成されている場合は削除されます。false に移行した場合、新しい RayCluster が作成されます。
  suspend: true
...

関連ドキュメント