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

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

最終更新日:Mar 26, 2026

ack-kube-queue は、Container Service for Kubernetes (ACK) のジョブキューマネージャーであり、十分なクラスターリソースが利用可能になるまでジョブを管理キューに保持することで、ジョブの開始を制御します。これにより、AI、機械学習 (ML)、およびバッチ処理ワークロードにおけるリソース競合や GPU/CPU アイドル時間の無駄を防ぎます。

このトピックでは、ack-kube-queue のインストール方法、追加のジョブタイプのサポートを有効にする方法、およびジョブをキューに送信する方法について説明します。

仕組み

ack-kube-queue は、Kubernetes のネイティブな suspend メカニズムを使用します。ジョブタイプに応じて、フィールドまたはアノテーションを介して suspendtrue に設定してジョブを送信すると、ジョブはキューに入ります。ack-kube-queue はクラスターリソースの可用性を監視し、十分なリソースが解放されると suspendfalse に設定して、ジョブの開始を許可します。

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

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

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

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

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

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

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

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

ご利用のクラスターの現在の状態に一致する手順を選択してください。

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

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

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

  3. [クラスター] ページで、お使いのクラスターを見つけ、その名前をクリックします。 左側のナビゲーションウィンドウで、[アプリケーション] > [Cloud-native AI Suite] を選択します。

  4. クラウドネイティブ AI スイート]ページの下部で、[デプロイ]をクリックします。[スケジューリング]セクションで、[Kube-Queue]を選択します。[エコシステムツール]セクションで、[Kubeflow および Arena]を選択します。次に、[クラウドネイティブ AI スイートのデプロイ]をクリックします。

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

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

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

  3. クラスター」ページで、クラスターを見つけ、その名前をクリックします。左側のナビゲーションウィンドウで、「アプリケーション」>「Cloud-native AI Suite」を選択します。

  4. ack-arena と ack-kube-queue を別々にインストールします。両方のコンポーネントがインストールされると、[コンポーネント] セクションの [ステータス] 列に Deployed と表示されます。

    • ack-arena を見つけ、[アクション] 列で [デプロイ] をクリックします。[パラメーター] パネルで、[OK] をクリックします。

    • 「ack-kube-queue」を見つけ、[デプロイ] をクリックします([操作] 列内)。表示されるパネルで、[OK] をクリックします。

ACK Lingjun クラスター

  1. ACK コンソール」にログインします。左側のナビゲーションウィンドウで、[マーケットプレイス] > [マーケットプレイス] を選択します。

  2. [Marketplace] ページで、ack-kube-queue を検索し、検索結果に表示された名前をクリックします。

  3. アプリケーション詳細ページの右上隅で、[デプロイ] をクリックします。 基本情報ステップで、[クラスター][名前空間]リリース名を設定し、[次へ] をクリックします。

  4. パラメーター」ステップで、[チャート バージョン] を最新バージョンに設定し、[OK] をクリックします。

追加のジョブタイプのサポートを有効化

デフォルトでは、`ack-kube-queue` は TensorFlow ジョブおよび PyTorch ジョブをサポートしています。Message Passing Interface (MPI) ジョブ、Argo ワークフロー、Ray ジョブ、Spark アプリケーション、Kubernetes ネイティブジョブなど、その他のジョブタイプをキューに登録するには、各ジョブタイプを個別に有効化する必要があります。

説明

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

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

  2. [クラスター] ページで、対象のクラスターを見つけ、その名前をクリックします。左側ナビゲーションウィンドウで、[アプリケーション] > [Helm] を選択します。

  3. ack-kube-queue を見つけ、[更新] をクリックします([操作] 列)。

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

    パラメーター効果
    extension.argo.enable: trueArgo ワークフローを有効化
    extension.mpi.enable: trueMPI ジョブを有効化
    extension.ray.enable: trueRay ジョブを有効化
    extension.spark.enable: trueSpark アプリケーションを有効化
    extension.tf.enable: trueTensorFlow ジョブを有効化
    extension.pytorch.enable: truePyTorch ジョブを有効化
  5. 変更を適用するには、[OK] をクリックします。

ジョブの送信

以下のセクションでは、サポートされている各ジョブタイプをキューに送信し、ジョブがキューに登録されていることを確認する方法について説明します。

制限事項

ジョブタイプ制限事項
TensorFlow、PyTorch、MPIack-arena が提供するオペレーターを使用する必要があります。
MPIArena を介してのみ送信できます。
Argo Workflows完全なワークフローのみをキューに登録できます。個々のワークフローステップは登録できません。ワークフローのリソース要件は、kube-queue/min-resources アノテーションを使用して宣言します (「Argo Workflows」セクションをご参照ください)。
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 Workflows

前提条件: ACK コンソールの [マーケットプレイス] ページから Argo Workflows コンポーネントをインストールします。手順については、「Argo Workflows のインストール」をご参照ください。

kube-queue-suspend という名前の 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: 5G
spec:
  suspend: true
  entrypoint: <entrypoint-template>
  templates:
  # Required: add a suspend template named kube-queue-suspend
  - name: kube-queue-suspend
    suspend: {}
  - name: <entrypoint-template>
    # ... your workflow steps

Spark アプリケーション

前提条件: ACK コンソールの [マーケットプレイス] ページから ack-spark-operator をインストールします。手順については、「ack-spark-operator のインストール」をご参照ください。

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

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 コンソールの [アドオン] ページから Kuberay-Operator をインストールします。詳細については、「コンポーネントの管理」をご参照ください。

spec.suspendtrue に設定します。

apiVersion: ray.io/v1
kind: RayJob
metadata:
  name: rayjob-sample
spec:
  # Suspend specifies whether the RayJob controller should create a RayCluster instance.
  # If a job is applied with the suspend field set to true, the RayCluster will not be created and we will wait for the transition to false.
  # If the RayCluster is already created, it will be deleted. In the case of transition to false, a new RayCluster will be created.
  suspend: true
...

関連トピック