AI ワークロード


OpenShift Container Platform 4.19

OpenShift Container Platform での AI ワークロードの実行

Red Hat OpenShift Documentation Team

概要

このドキュメントでは、OpenShift Container Platform クラスターで人工知能 (AI) ワークロードを実行する方法を説明します。大規模な AI トレーニングワークロードを、複数のノードにまたがって安定して実行する方法の詳細が記載されています。

第1章 OpenShift Container Platform 上の AI ワークロードの概要

OpenShift Container Platform は、トレーニング、推論、データサイエンスのワークフロー全体にわたり、人工知能 (AI) ワークロードを実行するためのセキュアでスケーラブルな基盤を提供します。

1.1. AI ワークロードを実行するための Operator

OpenShift Container Platform では、Operator を使用して人工知能 (AI) および機械学習 (ML) のワークロードを実行できます。Operator を使用すると、OpenShift Container Platform をアプリケーションのコアプラットフォームとして引き続き使用しながら、特定の AI/ML 要件に合わせてカスタマイズした環境を構築できます。

OpenShift Container Platform には、AI ワークロードの実行に役立つ Operator がいくつかあります。

Red Hat build of Kueue

Red Hat build of Kueue を使用すると、構造化されたキューと優先順位付けにより、ワークロードを公平かつ効率的に処理できます。適切な優先順位付けを行わないと、重要度の低いジョブがリソースを占有し、重要なジョブが遅延する可能性があります。

詳細は、「Red Hat build of Kueue の概要」を参照してください。

Leader Worker Set Operator

Leader Worker Set Operator を使用すると、リーダープロセスとワーカープロセス間の同期により、大規模な AI 推論ワークロードを複数のノードにまたがって安定して実行できるようになります。適切な連携がなければ、大規模なトレーニングの実行が失敗したり停止したりする可能性があります。

詳細は、「Leader Worker Set Operator の概要」を参照してください。

第2章 Red Hat build of Kueue

2.1. Red Hat build of Kueue の概要

Red Hat build of Kueue は、ジョブのリソースへのアクセスを管理する Kubernetes ネイティブのシステムです。Red Hat build of Kueue は、ジョブを待機させるタイミング、Pod を作成してジョブの開始を許可するタイミング、ジョブを プリエンプト (そのジョブ用のアクティブな Pod を削除すること) すべきタイミングを決定できます。

注記

Red Hat build of Kueue のコンテキストでは、ジョブは、完了まで実行される 1 回限りのタスクまたはオンデマンドのタスクとして定義できます。

Red Hat build of Kueue は Kueue オープンソースプロジェクトをベースにしています。

Red Hat build of Kueue は、異種かつ弾力性のあるリソースを使用する環境に対応しています。つまり、さまざまなリソースタイプが存在し、それらのリソースが動的なスケーリングに対応している環境です。

Red Hat build of Kueue は、Kubernetes クラスター内の既存のコンポーネントを置き換えるのではなく、既存の Kubernetes API サーバー、スケジューラー、およびクラスターオートスケーラーコンポーネントと統合します。

Red Hat build of Kueue は、オールオアナッシング (all-or-nothing) のセマンティクスをサポートしています。つまり、ジョブ全体とそのすべてのコンポーネントがクラスターに受け入れられるか、ジョブがクラスターに適合しない場合はジョブ全体が拒否されます。

2.1.1. 想定ユーザー

Red Hat build of Kueue のワークフローには、さまざまな役割のユーザーが存在します。

バッチ管理者
バッチ管理者は、クラスターインフラストラクチャーを管理し、クォータおよびキューを確立します。
バッチユーザー
バッチユーザーはクラスターでジョブを実行します。バッチユーザーには、研究者、AI/ML エンジニア、またはデータサイエンティストなどがあります。
サービングユーザー
サービングユーザーは、クラスターでジョブを実行します。たとえば、推論用にトレーニングされた AI/ML モデルを公開するなどです。
プラットフォーム開発者
プラットフォーム開発者は、Red Hat build of Kueue を他のソフトウェアと統合します。また、Kueue オープンソースプロジェクトにも貢献する場合があります。

2.1.2. ワークフローの概要

Red Hat build of Kueue のワークフローは、次のように概説できます。

  1. バッチ管理者が ResourceFlavorLocalQueue、および ClusterQueue リソースを作成および設定します。
  2. ユーザーがクラスターでジョブを作成します。
  3. Kubernetes API サーバーがジョブデータを検証して受け入れます。
  4. Red Hat build of Kueue が、順序やクォータなどの設定されたオプションに基づいてジョブを許可します。リソースフレーバーを使用してジョブにアフィニティーを注入し、各ジョブに対応する Workload オブジェクトを作成します。
  5. ジョブタイプに応じた適切なコントローラーが Pod を作成します。
  6. Kubernetes スケジューラーが、クラスター内のノードに Pod を割り当てます。
  7. Kubernetes クラスターオートスケーラーが、必要に応じて追加のノードをプロビジョニングします。

2.2. リリースノート

Red Hat build of Kueue は、OpenShift Container Platform 上でサポートされる Operator としてリリースされています。

2.2.1. 互換性のある環境

Red Hat build of Kueue をインストールする前に、このセクションを参照して、クラスターが要件を満たしていることを確認してください。

2.2.1.1. サポートされているアーキテクチャー

バージョン 1.1 以降の Red Hat build of Kueue は、次のアーキテクチャーでサポートされています。

  • ARM64
  • 64-bit x86
  • ppc64le (IBM Power®)
  • s390x (IBM Z®)
2.2.1.2. サポートされているプラットフォーム

バージョン 1.1 以降の Red Hat build of Kueue は、次のプラットフォームでサポートされています。

  • OpenShift Container Platform
  • OpenShift Container Platform の Hosted Control Plane
重要

現在、Red Hat build of Kueue は、Red Hat build of MicroShift (MicroShift) ではサポートされていません。

2.2.2. Red Hat build of Kueue バージョン 1.1 のリリースノート

Red Hat build of Kueue バージョン 1.1 は、OpenShift Container Platform バージョン 4.18 以降でサポートされている一般提供リリースです。Red Hat build of Kueue バージョン 1.1 では、Kueue バージョン 0.12 が使用されます。

重要

クラスターに以前にインストールしたバージョンの Red Hat build of Kueue がある場合は、Operator をアンインストールし、バージョン 1.1 を手動でインストールする必要があります。詳細は、Red Hat build of Kueue のアップグレード を参照してください。

2.2.2.1. 新機能および機能拡張
デフォルトのローカルキューの設定

デフォルトのローカルキューは、kueue.x-k8s.io/queue-name ラベルを持たない新しく作成されたジョブのローカルキューとして機能します。デフォルトのローカルキューを作成してから、kueue.x-k8s.io/queue-name ラベルのない namespace に新しいジョブを作成すると、そのジョブが更新されて自動的に kueue.x-k8s.io/queue-name: default ラベルが付与されます。

(RFE-7615)

マルチアーキテクチャーと Hosted Control Plane のサポート

このリリースでは、Red Hat build of Kueue は、ARM64、64 ビット x86、ppc64le (IBM Power®)、s390x (IBM Z®) などの複数の異なるアーキテクチャー、および OpenShift Container Platform の Hosted Control Plane でサポートされるようになりました。

(OCPSTRAT-2103)

(OCPSTRAT-2106)

2.2.2.2. 修正された問題
OpenShift Container Platform Web コンソールを使用して、Kueue カスタムリソースを作成できます。

この更新前は、OpenShift Container Platform Web コンソールを使用してフォームビューで Kueue カスタムリソース (CR) を作成しようとすると、Web コンソールにエラーが表示され、リソースを作成できませんでした。このリリースでは、Kueue CR テンプレートからデフォルトの namespace が削除されました。その結果、OpenShift Container Platform Web コンソールを使用して、フォームビューで Kueue CR を作成できるようになりました。

(OCPBUGS-58118)

2.2.2.3. 既知の問題
OpenShift Container Platform Web コンソールで Kueue CR の説明に "Not available" と表示される

Red Hat build of Kueue をインストールすると、Operator details ビューで、Kueue CR の説明に "Not available" と表示されます。この問題は、Red Hat build of Kueue Operator の機能に影響を与えるものでも、その機能を低下させるものでもありません。

(OCPBUGS-62185)

Red Hat build of Kueue をアンインストールしても、カスタムリソースが適切に削除されない

OpenShift Container Platform Web コンソールで Delete all operand instances for this operator オプションを使用して Red Hat Build of Kueue Operator をアンインストールしても、一部の Red Hat build of Kueue のカスタムリソースが完全に削除されません。これらのリソースは、Installed Operators ビューに Resource is being deleted というステータスとともに表示されます。回避策として、リソースのファイナライザーを手動で削除すると、完全に削除できます。

(OCPBUGS-62254)

2.2.3. Red Hat build of Kueue バージョン 1.0.1 のリリースノート

Red Hat build of Kueue バージョン 1.0.1 は、64 ビット x86 アーキテクチャー上の OpenShift Container Platform バージョン 4.18 および 4.19 でサポートされているパッチリリースです。

Red Hat build of Kueue バージョン 1.0.1 では、Kueue バージョン 0.11 が使用されます。

2.2.3.1. Red Hat build of Kueue バージョン 1.0.1 のバグ修正
  • 以前は、Red Hat build of Kueue のリーダー選出が中断を許容するように設定されていなかったため、頻繁にクラッシュが発生していました。このリリースでは、Red Hat build of Kueue のリーダー選出の値が、OpenShift Container Platform の推奨期間と一致するように更新されました。(OCPBUGS-58496)
  • 以前は、ReadyReplicas の数がリコンサイラーに設定されていなかったため、Red Hat build of Kueue Operator のステータスで準備完了状態のレプリカが存在しないと報告されていました。このリリースでは、ReadyReplicas の数がデプロイメントの準備完了レプリカの数に基づいているため、kueue-controller-manager Pod の準備が完了すると、OpenShift Container Platform コンソールで Operator が準備完了として表示されます。(OCPBUGS-59261)
  • 以前は、Kueue カスタムリソース (CR) が openshift-kueue-operator namespace から削除されても、kueue-manager-config config map が自動的に削除されず、その namespace に残る場合がありました。このリリースでは、Kueue CR が削除されると、kueue-manager-config config map、kueue-webhook-server-cert シークレット、および metrics-server-cert シークレットが自動的に削除されます。(OCPBUGS-57960)

2.2.4. Red Hat build of Kueue バージョン 1.0 のリリースノート

Red Hat build of Kueue バージョン 1.0 は、64 ビット x86 アーキテクチャー上の OpenShift Container Platform バージョン 4.18 および 4.19 でサポートされている一般提供リリースです。Red Hat build of Kueue バージョン 1.0 では、Kueue バージョン 0.11 が使用されます。

2.2.4.1. 新機能および機能拡張
ロールベースアクセス制御 (RBAC)
ロールベースアクセス制御 (RBAC) を使用すると、どのタイプのユーザーがどのタイプの Red Hat build of Kueue リソースを作成できるかを制御できます。
リソースクォータの設定
クラスターキュー、リソースフレーバー、およびローカルキューを作成してリソースクォータを設定すると、ユーザーが送信したジョブとワークロードで使用されるリソースの量を制御できます。
ジョブおよびワークロード管理の制御
namespace にラベルを付け、ラベルポリシーを設定すると、Red Hat build of Kueue によって管理されるジョブとワークロードを制御できます。
キュー間での借用可能なリソースの共有
コホート、フェアシェアリング、ギャングスケジューリングの設定を行うと、未使用の借用可能なリソースをキュー間で共有できるようになります。
2.2.4.2. 既知の問題
ジョブが kueue.x-k8s.io/queue-name ラベルを持っている場合、そのジョブが属する namespace にかかわらずリコンサイルされる

Red Hat build of Kueue は managedJobsNamespaceSelector 設定フィールドを使用します。そのため、管理者はどの namespace を Red Hat build of Kueue で管理するかを設定できます。namespace は、Red Hat build of Kueue で管理するように手動で設定する必要があります。そのため、システムまたはサードパーティーの namespace 内のリソースは、Red Hat build of Kueue によって影響を受けず、管理されません。

Red Hat build of Kueue 1.0 の動作では、kueue.x-k8s.io/queue-name ラベルを持つ Job リソースが、Red Hat build of Kueue による管理をオプトインするように設定されていない namespace に存在する場合でも、そのリソースのリコンシリエーションが許可されます。これは、Pod、デプロイメント、ステートフルセットなど、他の主要な連携機能の動作と一貫性がありません。これらのリソースは、Red Hat build of Kueue による管理をオプトインするように設定された namespace 内にある場合にのみリコンサイルされます。

(OCPBUGS-58205)

OpenShift Container Platform Web コンソールを使用して Kueue カスタムリソースを作成できない

OpenShift Container Platform Web コンソールを使用してフォームビューで Kueue カスタムリソース (CR) を作成しようとすると、Web コンソールにエラーが表示され、リソースを作成できません。回避策として、代わりに YAML ビューを使用して Kueue CR を作成します。

(OCPBUGS-58118)

2.3. Red Hat build of Kueue のインストール

OperatorHub の Red Hat Build of Kueue Operator を使用して、Red Hat Build of Kueue をインストールできます。

2.3.1. 互換性のある環境

Red Hat build of Kueue をインストールする前に、このセクションを参照して、クラスターが要件を満たしていることを確認してください。

2.3.1.1. サポートされているアーキテクチャー

バージョン 1.1 以降の Red Hat build of Kueue は、次のアーキテクチャーでサポートされています。

  • ARM64
  • 64-bit x86
  • ppc64le (IBM Power®)
  • s390x (IBM Z®)
2.3.1.2. サポートされているプラットフォーム

バージョン 1.1 以降の Red Hat build of Kueue は、次のプラットフォームでサポートされています。

  • OpenShift Container Platform
  • OpenShift Container Platform の Hosted Control Plane
重要

現在、Red Hat build of Kueue は、Red Hat build of MicroShift (MicroShift) ではサポートされていません。

2.3.2. Red Hat Build of Kueue Operator のインストール

Web コンソールで OperatorHub を使用して、Red Hat build of Kueue Operator を OpenShift Container Platform クラスターにインストールできます。

前提条件

  • OpenShift Container Platform クラスターの管理者権限を持っている。
  • OpenShift Container Platform Web コンソールにアクセスできる。
  • クラスターに cert-manager Operator for Red Hat OpenShift をインストールして設定した。

手順

  1. OpenShift Container Platform Web コンソールで、OperatorsOperatorHub をクリックします。
  2. 利用可能な Operator の一覧から Red Hat Build of Kueue Operator を選択し、Install をクリックします。

検証

  • OperatorsInstalled Operators に移動し、Red Hat Build of Kueue OperatorStatusSucceeded と表示されていることを確認します。

2.3.3. Red Hat build of Kueue のアップグレード

以前に Red Hat build of Kueue をインストールしたことがある場合、最新のバグ修正と機能拡張を使用するには、デプロイメントを手動で最新バージョンにアップグレードする必要があります。

前提条件

  • 以前のバージョンの Red Hat build of Kueue がインストールされている。
  • クラスター管理者の権限で OpenShift Container Platform Web コンソールにログインしている。

手順

  1. OpenShift Container Platform Web コンソールで、OperatorsInstalled Operator をクリックし、リストから Red Hat build of Kueue を選択します。
  2. Actions ドロップダウンメニューから、Uninstall Operator を選択します。
  3. Uninstall Operator? ダイアログボックスが開きます。Uninstall をクリックします。

    重要

    Uninstall をクリックする前に Delete all operand instances for this operator チェックボックスをオンにすると、次の既存のリソースを含むすべてのリソースがクラスターから削除されます。

    • Kueue CR
    • 作成したクラスターキュー、ローカルキュー、またはリソースフレーバー

    クラスターをアップグレードする際に作成したリソースを保持するには、このボックスをオフのままにしておきます。

  4. OpenShift Container Platform Web コンソールで、OperatorsOperatorHub をクリックします。
  5. 利用可能な Operator の一覧から Red Hat Build of Kueue Operator を選択し、Install をクリックします。

検証

  1. OperatorsInstalled Operators に移動します。
  2. Red Hat Build of Kueue OperatorStatusSucceeded と表示されていることを確認します。
  3. リスト内の Operator 名の下に表示されているバージョンが最新バージョンであることを確認します。

2.3.4. Kueue カスタムリソースの作成

Red Hat Build of Kueue Operator をインストールした後、インストールを設定するために Kueue カスタムリソース (CR) を作成する必要があります。

前提条件

以下の前提条件を満たしていることを確認します。

  • Red Hat build of Kueue Operator がクラスターにインストールされている。
  • クラスター管理者権限および kueue-batch-admin-role ロールがある。
  • OpenShift Container Platform Web コンソールにアクセスできる。

手順

  1. OpenShift Container Platform Web コンソールで、OperatorsInstalled Operators をクリックします。
  2. Provided APIs テーブル列で、Kueue をクリックします。これにより、Operator details ページの Kueue タブに移動します。
  3. Create Kueue をクリックします。これにより、Create Kueue YAML ビューに移動します。
  4. Kueue CR の詳細を入力します。

    Kueue CR の例

    apiVersion: kueue.openshift.io/v1
    kind: Kueue
    metadata:
      labels:
        app.kubernetes.io/name: kueue-operator
        app.kubernetes.io/managed-by: kustomize
      name: cluster 
    1
    
      namespace: openshift-kueue-operator
    spec:
      managementState: Managed
      config:
        integrations:
          frameworks: 
    2
    
          - BatchJob
        preemption:
          preemptionPolicy: Classical 
    3
    
    # ...
    Copy to Clipboard Toggle word wrap

    1
    Kueue CR の名前は cluster である必要があります。
    2
    他のワークロードタイプで使用するために Red Hat build of Kueue を設定する場合は、ここにそのタイプを追加します。デフォルトの設定では、BatchJob タイプのみが推奨され、サポートされます。
    3
    オプション: Red Hat build of Kueue にフェアシェアリングを設定する場合は、preemptionPolicy 値を FairSharing に設定します。Kueue CR のデフォルト設定は Classical プリエンプションです。
  5. Create をクリックします。

検証

  • Kueue CR を作成すると、Web コンソールに Operator details ページが表示され、Kueues のリストに CR が表示されます。
  • オプション: OpenShift CLI (oc) がインストールされている場合は、次のコマンドを実行し、出力を確認して Kueue CR が正常に作成されたことを確認できます。

    $ oc get kueue
    Copy to Clipboard Toggle word wrap

    出力例

    NAME      	AGE
    cluster   	4m
    Copy to Clipboard Toggle word wrap

2.3.5. Red Hat build of Kueue がジョブを管理できるように namespace にラベルを付ける

Red Hat build of Kueue Operator は、対象とするジョブと namespace に対してのみポリシーが適用されるように、オプトイン Webhook メカニズムを使用します。

Red Hat build of Kueue でジョブを管理する namespace には、kueue.openshift.io/managed=true ラベルを付ける必要があります。

前提条件

  • クラスター管理者パーミッションがある。
  • Red Hat build of Kueue Operator がクラスターにインストールされ、Kueue カスタムリソース (CR) が作成されている。
  • OpenShift CLI (oc) がインストールされている。

手順

  • 以下のコマンドを実行して、kueue.openshift.io/managed=true ラベルを namespace に追加します。

    $ oc label namespace <namespace> kueue.openshift.io/managed=true
    Copy to Clipboard Toggle word wrap

このラベルを追加すると、その namespace を Webhook アドミッションコントローラーによって管理するよう Red Hat build of Kueue Operator に指示することになります。その結果、その namespace 内の Red Hat build of Kueue リソースが適切に検証され、変更されるようになります。

2.4. 非接続環境での Red Hat build of Kueue のインストール

非接続の OpenShift Container Platform クラスターに Red Hat build of Kueue をインストールする前に、次の手順を実行して、非接続環境で Operator Lifecycle Manager (OLM) を有効にする必要があります。

  • OLM のデフォルトのリモート OperatorHub ソースを無効にします。
  • 完全なインターネットアクセスのあるワークステーションを使用して、OperatorHub コンテンツのローカルミラーを作成し、これをミラーレジストリーにプッシュします。
  • OLM を、デフォルトのリモートソースからではなくミラーレジストリーのローカルソースから Operator をインストールし、管理するように設定します。

非接続環境で OLM を有効にしたら、アクセス制限のないワークステーションを引き続き使用して、新しいバージョンの Operator のリリース時にローカルの OperatorHub ソースを継続的に更新できます。

これらの手順を完了するための詳細なドキュメントは、非接続環境での Operator Lifecycle Manager の使用 に関する OpenShift Container Platform ドキュメントを参照してください。

2.4.1. 互換性のある環境

Red Hat build of Kueue をインストールする前に、このセクションを参照して、クラスターが要件を満たしていることを確認してください。

2.4.1.1. サポートされているアーキテクチャー

バージョン 1.1 以降の Red Hat build of Kueue は、次のアーキテクチャーでサポートされています。

  • ARM64
  • 64-bit x86
  • ppc64le (IBM Power®)
  • s390x (IBM Z®)
2.4.1.2. サポートされているプラットフォーム

バージョン 1.1 以降の Red Hat build of Kueue は、次のプラットフォームでサポートされています。

  • OpenShift Container Platform
  • OpenShift Container Platform の Hosted Control Plane
重要

現在、Red Hat build of Kueue は、Red Hat build of MicroShift (MicroShift) ではサポートされていません。

2.4.2. Red Hat Build of Kueue Operator のインストール

Web コンソールで OperatorHub を使用して、Red Hat build of Kueue Operator を OpenShift Container Platform クラスターにインストールできます。

前提条件

  • OpenShift Container Platform クラスターの管理者権限を持っている。
  • OpenShift Container Platform Web コンソールにアクセスできる。
  • クラスターに cert-manager Operator for Red Hat OpenShift をインストールして設定した。

手順

  1. OpenShift Container Platform Web コンソールで、OperatorsOperatorHub をクリックします。
  2. 利用可能な Operator の一覧から Red Hat Build of Kueue Operator を選択し、Install をクリックします。

検証

  • OperatorsInstalled Operators に移動し、Red Hat Build of Kueue OperatorStatusSucceeded と表示されていることを確認します。

2.4.3. Red Hat build of Kueue のアップグレード

以前に Red Hat build of Kueue をインストールしたことがある場合、最新のバグ修正と機能拡張を使用するには、デプロイメントを手動で最新バージョンにアップグレードする必要があります。

前提条件

  • 以前のバージョンの Red Hat build of Kueue がインストールされている。
  • クラスター管理者の権限で OpenShift Container Platform Web コンソールにログインしている。

手順

  1. OpenShift Container Platform Web コンソールで、OperatorsInstalled Operator をクリックし、リストから Red Hat build of Kueue を選択します。
  2. Actions ドロップダウンメニューから、Uninstall Operator を選択します。
  3. Uninstall Operator? ダイアログボックスが開きます。Uninstall をクリックします。

    重要

    Uninstall をクリックする前に Delete all operand instances for this operator チェックボックスをオンにすると、次の既存のリソースを含むすべてのリソースがクラスターから削除されます。

    • Kueue CR
    • 作成したクラスターキュー、ローカルキュー、またはリソースフレーバー

    クラスターをアップグレードする際に作成したリソースを保持するには、このボックスをオフのままにしておきます。

  4. OpenShift Container Platform Web コンソールで、OperatorsOperatorHub をクリックします。
  5. 利用可能な Operator の一覧から Red Hat Build of Kueue Operator を選択し、Install をクリックします。

検証

  1. OperatorsInstalled Operators に移動します。
  2. Red Hat Build of Kueue OperatorStatusSucceeded と表示されていることを確認します。
  3. リスト内の Operator 名の下に表示されているバージョンが最新バージョンであることを確認します。

2.4.4. Kueue カスタムリソースの作成

Red Hat Build of Kueue Operator をインストールした後、インストールを設定するために Kueue カスタムリソース (CR) を作成する必要があります。

前提条件

以下の前提条件を満たしていることを確認します。

  • Red Hat build of Kueue Operator がクラスターにインストールされている。
  • クラスター管理者権限および kueue-batch-admin-role ロールがある。
  • OpenShift Container Platform Web コンソールにアクセスできる。

手順

  1. OpenShift Container Platform Web コンソールで、OperatorsInstalled Operators をクリックします。
  2. Provided APIs テーブル列で、Kueue をクリックします。これにより、Operator details ページの Kueue タブに移動します。
  3. Create Kueue をクリックします。これにより、Create Kueue YAML ビューに移動します。
  4. Kueue CR の詳細を入力します。

    Kueue CR の例

    apiVersion: kueue.openshift.io/v1
    kind: Kueue
    metadata:
      labels:
        app.kubernetes.io/name: kueue-operator
        app.kubernetes.io/managed-by: kustomize
      name: cluster 
    1
    
      namespace: openshift-kueue-operator
    spec:
      managementState: Managed
      config:
        integrations:
          frameworks: 
    2
    
          - BatchJob
        preemption:
          preemptionPolicy: Classical 
    3
    
    # ...
    Copy to Clipboard Toggle word wrap

    1
    Kueue CR の名前は cluster である必要があります。
    2
    他のワークロードタイプで使用するために Red Hat build of Kueue を設定する場合は、ここにそのタイプを追加します。デフォルトの設定では、BatchJob タイプのみが推奨され、サポートされます。
    3
    オプション: Red Hat build of Kueue にフェアシェアリングを設定する場合は、preemptionPolicy 値を FairSharing に設定します。Kueue CR のデフォルト設定は Classical プリエンプションです。
  5. Create をクリックします。

検証

  • Kueue CR を作成すると、Web コンソールに Operator details ページが表示され、Kueues のリストに CR が表示されます。
  • オプション: OpenShift CLI (oc) がインストールされている場合は、次のコマンドを実行し、出力を確認して Kueue CR が正常に作成されたことを確認できます。

    $ oc get kueue
    Copy to Clipboard Toggle word wrap

    出力例

    NAME      	AGE
    cluster   	4m
    Copy to Clipboard Toggle word wrap

2.4.5. Red Hat build of Kueue がジョブを管理できるように namespace にラベルを付ける

Red Hat build of Kueue Operator は、対象とするジョブと namespace に対してのみポリシーが適用されるように、オプトイン Webhook メカニズムを使用します。

Red Hat build of Kueue でジョブを管理する namespace には、kueue.openshift.io/managed=true ラベルを付ける必要があります。

前提条件

  • クラスター管理者パーミッションがある。
  • Red Hat build of Kueue Operator がクラスターにインストールされ、Kueue カスタムリソース (CR) が作成されている。
  • OpenShift CLI (oc) がインストールされている。

手順

  • 以下のコマンドを実行して、kueue.openshift.io/managed=true ラベルを namespace に追加します。

    $ oc label namespace <namespace> kueue.openshift.io/managed=true
    Copy to Clipboard Toggle word wrap

このラベルを追加すると、その namespace を Webhook アドミッションコントローラーによって管理するよう Red Hat build of Kueue Operator に指示することになります。その結果、その namespace 内の Red Hat build of Kueue リソースが適切に検証され、変更されるようになります。

2.5. ロールベースの権限の設定

以下の手順では、Red Hat build of Kueue デプロイメントでロールベースアクセス制御 (RBAC) を設定する方法を説明します。これらの RBAC 権限によって、どのタイプのユーザーがどのタイプの Red Hat build of Kueue オブジェクトを作成できるかが決まります。

2.5.1. クラスターロール

Red Hat build of Kueue Operator は、デフォルトで kueue-batch-admin-role および kueue-batch-user-role クラスターロールをデプロイします。

kueue-batch-admin-role
このクラスターロールには、クラスターキュー、ローカルキュー、ワークロード、およびリソースフレーバーを管理する権限が含まれます。
kueue-batch-user-role
このクラスターロールには、ジョブを管理し、ローカルキューとワークロードを表示する権限が含まれます。

2.5.2. バッチ管理者の権限の設定

kueue-batch-admin-role クラスターロールをユーザーまたはユーザーグループにバインドすることで、バッチ管理者の権限を設定できます。

前提条件

  • Red Hat build of Kueue Operator がクラスターにインストールされている。
  • クラスター管理者パーミッションがある。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. ClusterRoleBinding オブジェクトを YAML ファイルとして作成します。

    ClusterRoleBinding オブジェクトの例

    apiVersion: rbac.authorization.k8s.io/v1
    kind: ClusterRoleBinding
    metadata:
      name: kueue-admins 
    1
    
    subjects: 
    2
    
    - kind: User
      name: admin@example.com
      apiGroup: rbac.authorization.k8s.io
    roleRef: 
    3
    
      kind: ClusterRole
      name: kueue-batch-admin-role
      apiGroup: rbac.authorization.k8s.io
    Copy to Clipboard Toggle word wrap

    1
    ClusterRoleBinding オブジェクトの名前を指定します。
    2
    ユーザー権限を付与するユーザーまたはユーザーグループに関する詳細を追加します。
    3
    kueue-batch-admin-role クラスターロールに関する詳細を追加します。
  2. ClusterRoleBinding オブジェクトを適用します。

    $ oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

検証

  • 次のコマンドを実行し、出力に kueue-batch-admin-role クラスターロールの正しい情報が含まれていることを確認し、ClusterRoleBinding オブジェクトが正しく適用されたことを確認できます。

    $ oc describe clusterrolebinding.rbac
    Copy to Clipboard Toggle word wrap

    出力例

    ...
    Name:         kueue-batch-admin-role
    Labels:       app.kubernetes.io/name=kueue
    Annotations:  <none>
    Role:
      Kind:  ClusterRole
      Name:  kueue-batch-admin-role
    Subjects:
      Kind            Name                      Namespace
      ----            ----                      ---------
      User            admin@example.com         admin-namespace
    ...
    Copy to Clipboard Toggle word wrap

2.5.3. ユーザー権限の設定

kueue-batch-user-role クラスターロールをユーザーまたはユーザーグループにバインドすることで、Red Hat build of Kueue ユーザーの権限を設定できます。

前提条件

  • Red Hat build of Kueue Operator がクラスターにインストールされている。
  • クラスター管理者パーミッションがある。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. RoleBinding オブジェクトを YAML ファイルとして作成します。

    ClusterRoleBinding オブジェクトの例

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      name: kueue-users 
    1
    
      namespace: user-namespace 
    2
    
    subjects: 
    3
    
    - kind: Group
      name: team-a@example.com
      apiGroup: rbac.authorization.k8s.io
    roleRef: 
    4
    
      kind: ClusterRole
      name: kueue-batch-user-role
      apiGroup: rbac.authorization.k8s.io
    Copy to Clipboard Toggle word wrap

    1
    RoleBinding オブジェクトの名前を指定します。
    2
    RoleBinding オブジェクトが適用される namespace に関する詳細を追加します。
    3
    ユーザー権限を付与するユーザーまたはユーザーグループに関する詳細を追加します。
    4
    kueue-batch-user-role クラスターロールに関する詳細を追加します。
  2. RoleBinding オブジェクトを適用します。

    $ oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

検証

  • 次のコマンドを実行し、出力に kueue-batch-user-role クラスターロールの正しい情報が含まれていることを確認し、RoleBinding オブジェクトが正しく適用されたことを確認できます。

    $ oc describe rolebinding.rbac
    Copy to Clipboard Toggle word wrap

    出力例

    ...
    Name:         kueue-users
    Labels:       app.kubernetes.io/name=kueue
    Annotations:  <none>
    Role:
      Kind:  ClusterRole
      Name:  kueue-batch-user-role
    Subjects:
      Kind            Name                      Namespace
      ----            ----                      ---------
      Group           team-a@example.com        user-namespace
    ...
    Copy to Clipboard Toggle word wrap

2.6. クォータの設定

管理者は、Red Hat build of Kueue を使用してクォータを設定し、ユーザーワークロードのリソース割り当てとシステムスループットを最適化できます。CPU、メモリー、Pod、GPU などのコンピュートリソースのクォータを設定できます。

以下の手順を実行すると、Red Hat build of Kueue でクォータを設定できます。

  1. クラスターキューを設定します。
  2. リソースフレーバーを設定します。
  3. ローカルキューを設定します。

その後、ユーザーはワークロードをローカルキューに送信できます。

2.6.1. クラスターキューの設定

クラスターキューは、ClusterQueue オブジェクトによって表されるクラスタースコープのリソースであり、CPU、メモリー、Pod などのリソースプールを管理します。クラスターキューを使用すると、使用制限、リソースフレーバーのクォータ、消費順序、フェアシェアリングルールを定義できます。

注記

ResourceFlavor オブジェクトも設定されるまで、クラスターキューは使用可能になりません。

前提条件

  • Red Hat build of Kueue Operator がクラスターにインストールされている。
  • クラスター管理者権限または kueue-batch-admin-role ロールがある。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. ClusterQueue オブジェクトを YAML ファイルとして作成します。

    単一のリソースフレーバーを使用した基本的な ClusterQueue オブジェクトの例

    apiVersion: kueue.x-k8s.io/v1beta1
    kind: ClusterQueue
    metadata:
      name: cluster-queue
    spec:
      namespaceSelector: {} 
    1
    
      resourceGroups:
      - coveredResources: ["cpu", "memory", "pods", "foo.com/gpu"] 
    2
    
        flavors:
        - name: "default-flavor" 
    3
    
          resources: 
    4
    
          - name: "cpu"
            nominalQuota: 9
          - name: "memory"
            nominalQuota: 36Gi
          - name: "pods"
            nominalQuota: 5
          - name: "foo.com/gpu"
            nominalQuota: 100
    Copy to Clipboard Toggle word wrap

    1
    このクラスターキューが管理するリソースを使用できる namespace を定義します。例に示すように、空の namespaceSelector は、すべての namespace がこれらのリソースを使用できることを意味します。
    2
    クラスターキューによって管理されるリソースタイプを定義します。この例では、ClusterQueue オブジェクトは CPU、メモリー、Pod、および GPU リソースを管理します。
    3
    リストされているリソースタイプに適用されるリソースフレーバーを定義します。この例では、default-flavor リソースフレーバーが CPU、メモリー、Pod、および GPU リソースに適用されます。
    4
    ジョブを許可するリソース要件を定義します。このサンプルクラスターキューは、次の条件が満たされた場合にのみジョブを許可します。
    • CPU 要求の合計は 9 以下です。
    • メモリー要求の合計は 36Gi 以下です。
    • Pod の合計数は 5 以下です。
    • GPU リクエストの合計は 100 以下です。
  2. 次のコマンドを実行して、ClusterQueue オブジェクトを適用します。

    $ oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

次のステップ

ResourceFlavor オブジェクト も設定されるまで、クラスターキューは使用可能になりません。

2.6.2. リソースフレーバーの設定

ClusterQueue オブジェクトを設定したら、ResourceFlavor オブジェクトを設定できます。

クラスター内のリソースは通常、同種ではありません。クラスター内のリソースが同種である場合は、カスタムリソースフレーバーにラベルを追加する代わりに、空の ResourceFlavor を使用できます。

カスタム ResourceFlavor オブジェクトを使用すると、ラベル、taint、および toleration を通じてクラスターノードに関連付けられているさまざまなリソースのバリエーションを表すことができます。その後、ワークロードを特定のノードタイプに関連付けて、きめ細かなリソース管理が可能になります。

前提条件

  • Red Hat build of Kueue Operator がクラスターにインストールされている。
  • クラスター管理者権限または kueue-batch-admin-role ロールがある。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. ResourceFlavor オブジェクトを YAML ファイルとして作成します。

    空の ResourceFlavor オブジェクトの例

    apiVersion: kueue.x-k8s.io/v1beta1
    kind: ResourceFlavor
    metadata:
      name: default-flavor
    Copy to Clipboard Toggle word wrap

    カスタム ResourceFlavor オブジェクトの例

    apiVersion: kueue.x-k8s.io/v1beta1
    kind: ResourceFlavor
    metadata:
      name: "x86"
    spec:
      nodeLabels:
        cpu-arch: x86
    Copy to Clipboard Toggle word wrap

  2. 以下のコマンドを実行して ResourceFlavor オブジェクトを適用します。

    $ oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

2.6.3. ローカルキューの設定

ローカルキューは、LocalQueue オブジェクトによって表される namespace オブジェクトであり、単一の namespace に属する密接に関連するワークロードをグループ化します。

管理者は、LocalQueue オブジェクトをクラスターキューを指すように設定できます。これにより、クラスターキューのリソースが、LocalQueue オブジェクトで指定された namespace 内のワークロードに割り当てられます。

前提条件

  • Red Hat build of Kueue Operator がクラスターにインストールされている。
  • クラスター管理者権限または kueue-batch-admin-role ロールがある。
  • OpenShift CLI (oc) がインストールされている。
  • ClusterQueue オブジェクトを作成している。

手順

  1. LocalQueue オブジェクトを YAML ファイルとして作成します。

    基本的な LocalQueue オブジェクトの例

    apiVersion: kueue.x-k8s.io/v1beta1
    kind: LocalQueue
    metadata:
      namespace: team-namespace
      name: user-queue
    spec:
      clusterQueue: cluster-queue
    Copy to Clipboard Toggle word wrap

  2. 次のコマンドを実行して、LocalQueue オブジェクトを適用します。

    $ oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

2.6.4. デフォルトのローカルキューの設定

クラスター管理者は、各ジョブに明示的にラベルを付けることなく、選択した namespace 内のすべてのジョブを管理することで、クラスター内のクォータの適用を改善できます。これは、デフォルトのローカルキューを作成することで実行できます。

デフォルトのローカルキューは、kueue.x-k8s.io/queue-name ラベルを持たない新しく作成されたジョブのローカルキューとして機能します。デフォルトのローカルキューを作成してから、kueue.x-k8s.io/queue-name ラベルのない namespace に新しいジョブを作成すると、そのジョブが更新されて自動的に kueue.x-k8s.io/queue-name: default ラベルが付与されます。

重要

デフォルトのローカルキューを作成しても、namespace 内の既存のジョブは影響を受けません。デフォルトのローカルキューを作成する前に、namespace にジョブがすでに存在する場合は、そのジョブに明示的にラベルを付けてキューに割り当てる必要があります。

前提条件

  • クラスターに Red Hat build of Kueue バージョン 1.1 がインストールされている。
  • クラスター管理者権限または kueue-batch-admin-role ロールがある。
  • OpenShift CLI (oc) がインストールされている。
  • ClusterQueue オブジェクトを作成している。

手順

  1. default という名前の LocalQueue オブジェクトを YAML ファイルとして作成します。

    デフォルトの LocalQueue オブジェクトの例

    apiVersion: kueue.x-k8s.io/v1beta1
    kind: LocalQueue
    metadata:
      namespace: team-namespace
      name: default
    spec:
      clusterQueue: cluster-queue
    Copy to Clipboard Toggle word wrap

  2. 次のコマンドを実行して、LocalQueue オブジェクトを適用します。

    $ oc apply -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

検証

  1. デフォルトのローカルキューと同じ namespace にジョブを作成します。
  2. ジョブが kueue.x-k8s.io/queue-name: default ラベルで更新されることを確認します。

2.7. ジョブおよびワークロードの管理

Red Hat build of Kueue は、ユーザーが作成したジョブを直接操作しません。代わりに、Kueue はジョブのリソース要件を表す Workload オブジェクトを管理します。Red Hat build of Kueue は、各ジョブのワークロードを自動的に作成し、2 つのオブジェクト間の決定とステータスを同期します。

2.7.1. Red Hat build of Kueue がジョブを管理できるように namespace にラベルを付ける

Red Hat build of Kueue Operator は、対象とするジョブと namespace に対してのみポリシーが適用されるように、オプトイン Webhook メカニズムを使用します。

Red Hat build of Kueue でジョブを管理する namespace には、kueue.openshift.io/managed=true ラベルを付ける必要があります。

前提条件

  • クラスター管理者パーミッションがある。
  • Red Hat build of Kueue Operator がクラスターにインストールされ、Kueue カスタムリソース (CR) が作成されている。
  • OpenShift CLI (oc) がインストールされている。

手順

  • 以下のコマンドを実行して、kueue.openshift.io/managed=true ラベルを namespace に追加します。

    $ oc label namespace <namespace> kueue.openshift.io/managed=true
    Copy to Clipboard Toggle word wrap

このラベルを追加すると、その namespace を Webhook アドミッションコントローラーによって管理するよう Red Hat build of Kueue Operator に指示することになります。その結果、その namespace 内の Red Hat build of Kueue リソースが適切に検証され、変更されるようになります。

2.7.2. ジョブのラベルポリシーの設定

Kueue カスタムリソース (CR) の spec.config.workloadManagement.labelPolicy 仕様は、Red Hat build of Kueue がさまざまなジョブを管理するか無視するかを決定する方法を制御する省略可能なフィールドです。使用できる値は QueueNameNone、および空 ("") です。

labelPolicy 設定が省略されているか、空 ("") の場合、デフォルトのポリシーとして、Red Hat build of Kueue は kueue.x-k8s.io/queue-name ラベルを持つジョブを管理し、kueue.x-k8s.io/queue-name ラベルを持たないジョブを無視します。これは、labelPolicyQueueName に設定されている場合と同じワークフローです。

labelPolicy 設定が None に設定されている場合、ジョブは kueue.x-k8s.io/queue-name ラベルがなくても、Red Hat build of Kueue によって管理されます。

workloadManagement 仕様設定の例

apiVersion: kueue.openshift.io/v1
kind: Kueue
metadata:
  labels:
    app.kubernetes.io/name: kueue-operator
    app.kubernetes.io/managed-by: kustomize
  name: cluster
  namespace: openshift-kueue-operator
spec:
  config:
    workloadManagement:
      labelPolicy: QueueName
# ...
Copy to Clipboard Toggle word wrap

kueue.x-k8s.io/queue-name ラベルを含むユーザー作成の Job オブジェクトの例

apiVersion: batch/v1
kind: Job
metadata:
  generateName: sample-job-
  namespace: my-namespace
  labels:
    kueue.x-k8s.io/queue-name: user-queue
spec:
# ...
Copy to Clipboard Toggle word wrap

2.8. コホートの使用

コホートを使用すると、クラスターキューをグループ化し、どのクラスターキューがリソースを相互に共有できるかを定義できます。共有可能リソースとは、コホート内のすべてのクラスターキューに割り当てられた未使用の公称クォータとして定義されます。

コホートを使用すると、リソース不足を防ぎ、フェアシェアリングの設定を有効にすることで、リソースの使用率を最適化できます。コホートを使用すると、関連するワークロードまたは各チームのクラスターキューをグループ化できるため、チーム間のリソース管理と割り当てを簡素化することもできます。また、コホートを使用してグループレベルでリソースクォータを設定し、クラスターキューのグループが消費できるリソースの制限を定義することもできます。

2.8.1. クラスターキュー仕様内でのコホートの設定

次の例に示すように、ClusterQueue オブジェクトの .spec.cohort フィールドにコホートの名前を指定して、コホートにクラスターキューを追加できます。

apiVersion: kueue.x-k8s.io/v1beta1
kind: ClusterQueue
metadata:
  name: cluster-queue
spec:
# ...
  cohort: example-cohort
# ...
Copy to Clipboard Toggle word wrap

spec.cohort が一致するクラスターキューはすべて、同じコホートに含まれます。

spec.cohort フィールドが省略されている場合、クラスターキューはどのコホートにも属さず、共有可能なリソースにアクセスできません。

2.9. フェアシェアリングの設定

フェアシェアリングは、コホートのテナント間で、借用可能なリソースを均等に、または重み付けされた割合で共有するのに使用されるプリエンプションストラテジーです。借用可能なリソースは、コホート内のすべてのクラスターキューの未使用の名目上のクォータです。

Kueue カスタムリソース (CR) の preemptionPolicy 値を FairSharing に設定することで、フェアシェアリングを設定できます。

2.9.1. クラスターキューの重み

フェアシェアリングを有効にした後、フェアシェアリングを実行するには、各クラスターキューのシェア値を設定する必要があります。シェア値は、ClusterQueue オブジェクト内の weight 値として表されます。

シェア値を使用すると、管理者は特定のジョブタイプやチームを優先できるため、この値は重要です。重要なアプリケーションや優先度の高いチームには、利用可能なリソースが相対的に多く割り当てられるように、重みを付けた値を設定できます。重みを設定すると、未使用のリソースが先着順ではなく、定義された組織またはプロジェクトの優先順位に従って配分されるようになります。

weight 値、またはシェア値は、借用可能なリソースを競う際のクラスターキューの比較優位性を定義します。通常、Red Hat build of Kueue は、シェア値が低いジョブから先に許可します。シェア値が高いジョブは、シェア値が低いジョブよりも先にプリエンプトされる可能性が高くなります。

フェアシェアリングの重みが設定されたクラスターキューの例

apiVersion: kueue.x-k8s.io/v1beta1
kind: ClusterQueue
metadata:
  name: cluster-queue
spec:
  namespaceSelector: {}
  resourceGroups:
  - coveredResources: ["cpu"]
    flavors:
    - name: default-flavor
      resources:
      - name: cpu
        nominalQuota: 9
  cohort: example-cohort
  fairSharing:
    weight: 2
Copy to Clipboard Toggle word wrap

2.9.1.1. 重みゼロ

weight 値が 0 の場合、シェア値は無限です。つまり、そのクラスターキューは他のキューと比べて常に不利な状態に置かれ、フェアシェアリングが有効な場合は、そのワークロードが常に最初にプリエンプトされることになります。

2.10. ギャングスケジューリング

ギャングスケジューリングにより、必要なリソースがすべて利用可能になった場合にのみ、関連するジョブのグループまたは ギャング が開始されます。Red Hat build of Kueue は、ギャング内の関連ジョブすべてをまとめて開始および実行する容量を OpenShift Container Platform クラスターが保証できるようになるまで、ジョブを一時停止することで、ギャングスケジューリングを可能にします。これは、オールオアナッシング (all-or-nothing) スケジューリングとも呼ばれます。

GPU などの高価で限られたリソースを使用する場合、ギャングスケジューリングは重要です。ギャングスケジューリングにより、ジョブが GPU を要求するものの使用しないという状況を防ぐことができ、GPU の使用率が向上し、実行コストを削減できます。ギャングスケジューリングは、リソースのセグメンテーションやデッドロックなどの問題を防ぐ場合にも役立ちます。

2.10.1. ギャングスケジューリングの設定

クラスター管理者は、Kueue カスタムリソース (CR) の gangScheduling spec を変更することで、ギャングスケジューリングを設定できます。

ギャングスケジューリングが設定された Kueue CR の例

apiVersion: kueue.openshift.io/v1
kind: Kueue
metadata:
  name: cluster
  labels:
    app.kubernetes.io/managed-by: kustomize
    app.kubernetes.io/name: kueue-operator
  namespace: openshift-kueue-operator
spec:
  config:
    gangScheduling:
      policy: ByWorkload 
1

      byWorkload:
        admission: Parallel 
2

# ...
Copy to Clipboard Toggle word wrap

1
policy 値を設定して、ギャングスケジューリングを有効または無効化できます。可能な値は ByWorkloadNone、または空 ("") です。
ByWorkload
policy 値が ByWorkload に設定されている場合、各ジョブは単一のユニットとして処理され、許可の対象となります。指定された時間内にジョブの準備が完了しない場合は、ジョブ全体が退避され、後で再試行されます。
None
policy 値が None に設定されている場合、ギャングスケジューリングは無効になります。
空白 ("")
policy 値が空、または "" に設定されている場合、Red Hat build of Kueue Operator がギャングスケジューリングの設定を決定します。現在、ギャングスケジューリングはデフォルトで無効になっています。
2
policy 値が ByWorkload に設定されている場合、ジョブの許可設定を行う必要があります。admission spec に指定できる値は、ParallelSequential、または空 ("") です。
Parallel
admission 値が Parallel に設定されている場合、任意のジョブの Pod をいつでも許可できます。これにより、ジョブがクラスター容量をめぐって競合するデッドロックが発生する可能性があります。デッドロックが発生すると、別のジョブからの Pod のスケジューリングが成功すると、現在のジョブからの Pod のスケジューリングが妨げられる可能性があります。
Sequential
admission 値が Sequential に設定されている場合、現在処理中のジョブからの Pod のみが許可されます。現在のジョブのすべての Pod が許可され準備完了になると、Red Hat build of Kueue は次のジョブを処理します。クラスターに複数のジョブを処理するのに十分な容量がある場合、順次処理によって許可速度が低下する可能性がありますが、ジョブのすべての Pod が正常に一緒にスケジュールされる可能性が高くなります。
空白 ("")
admission 値が空または "" に設定されている場合、Red Hat build of Kueue Operator がジョブの許可設定を決定します。現在、admission 値はデフォルトで Parallel に設定されています。

2.11. クォータ制限付きジョブの実行

Red Hat build of Kueue を有効にして Kubernetes ジョブを実行すると、定義したクォータ制限内でリソースの割り当てを管理できます。これにより、予測可能なリソースの可用性、クラスターの安定性、およびパフォーマンスの最適化に役立ちます。

2.11.1. 利用可能なローカルキューの特定

ジョブをキューに送信する前に、ローカルキューの名前を見つける必要があります。

前提条件

  • クラスター管理者によって OpenShift Container Platform クラスターに Red Hat build of Kueue がインストールおよび設定されている。
  • クラスター管理者によって kueue-batch-user-role クラスターロールが割り当てられている。
  • OpenShift CLI (oc) がインストールされている。

手順

  • 次のコマンドを実行し、namespace 内で使用可能なローカルキューをリスト表示します。

    $ oc -n <namespace> get localqueues
    Copy to Clipboard Toggle word wrap

    出力例

    NAME         CLUSTERQUEUE    PENDING WORKLOADS
    user-queue   cluster-queue   3
    Copy to Clipboard Toggle word wrap

2.11.2. Red Hat build of Kueue で実行するジョブの定義

Red Hat build of Kueue で実行するジョブを定義する場合は、次の基準を満たしていることを確認してください。

  • kueue.x-k8s.io/queue-name ラベルを使用して、ジョブの送信先となるローカルキューを指定します。
  • 各ジョブ Pod のリソース要求を含めます。

Red Hat build of Kueue はジョブを一時停止し、リソースが利用可能になったときにジョブを開始します。Red Hat build of Kueue は、ジョブと同じ名前の Workload オブジェクトとして表される、対応するワークロードを作成します。

前提条件

  • クラスター管理者によって OpenShift Container Platform クラスターに Red Hat build of Kueue がインストールおよび設定されている。
  • クラスター管理者によって kueue-batch-user-role クラスターロールが割り当てられている。
  • OpenShift CLI (oc) がインストールされている。
  • ジョブを送信するローカルキューの名前を特定した。

手順

  1. Job オブジェクトを作成します。

    ジョブの例

    apiVersion: batch/v1
    kind: Job 
    1
    
    metadata:
      generateName: sample-job- 
    2
    
      namespace: my-namespace
      labels:
        kueue.x-k8s.io/queue-name: user-queue 
    3
    
    spec:
      parallelism: 3
      completions: 3
      template:
        spec:
          containers:
          - name: dummy-job
            image: registry.k8s.io/e2e-test-images/agnhost:2.53
            args: ["entrypoint-tester", "hello", "world"]
            resources: 
    4
    
              requests:
                cpu: 1
                memory: "200Mi"
          restartPolicy: Never
    Copy to Clipboard Toggle word wrap

    1
    リソースタイプを、バッチ計算タスクを表す Job オブジェクトとして定義します。
    2
    ジョブの一意の名前を生成するための接頭辞を提供します。
    3
    ジョブを送信するキューを識別します。
    4
    各 Pod のリソース要求を定義します。
  2. 次のコマンドを実行してジョブを実行します。

    $ oc create -f <filename>.yaml
    Copy to Clipboard Toggle word wrap

検証

  • 次のコマンドを実行して出力を確認し、作成したジョブに対して Pod が実行されていることをチェックします。

    $ oc get job <job-name>
    Copy to Clipboard Toggle word wrap

    出力例

    NAME               STATUS      COMPLETIONS   DURATION   AGE
    sample-job-sk42x   Suspended   0/1                      2m12s
    Copy to Clipboard Toggle word wrap

  • 次のコマンドを実行して出力を確認し、ワークロードがジョブの namespace で作成されたことをチェックします。

    $ oc -n <namespace> get workloads
    Copy to Clipboard Toggle word wrap

    出力例

    NAME                         QUEUE          RESERVED IN   ADMITTED   FINISHED   AGE
    job-sample-job-sk42x-77c03   user-queue                                         3m8s
    Copy to Clipboard Toggle word wrap

2.12. サポートの利用

このドキュメントで説明されている手順、または Red Hat build of Kueue 全般に問題がある場合は、Red Hat カスタマーポータル にアクセスしてください。

カスタマーポータルでは、以下を行うことができます。

  • Red Hat 製品に関するアーティクルおよびソリューションを対象とした Red Hat ナレッジベースの検索またはブラウズ。
  • Red Hat サポートに対するサポートケースの送信。
  • その他の製品ドキュメントへのアクセス。

2.12.1. Red Hat ナレッジベースについて

Red Hat ナレッジベース は、お客様が Red Hat の製品やテクノロジーを最大限に活用できるようにするための豊富なコンテンツを提供します。Red Hat ナレッジベースは、Red Hat 製品のインストール、設定、および使用に関する記事、製品ドキュメント、および動画で構成されています。さらに、既知の問題に対する解決策を検索でき、それぞれに根本原因の簡潔な説明と修復手順が記載されています。

2.12.2. Red Hat サポート用のデータ収集

oc adm must-gather CLI コマンドを使用すると、次のような問題のデバッグに必要になる可能性が高い、Red Hat build of Kueue インスタンスに関する情報を収集できます。

  • ワークロード、クラスターキュー、ローカルキュー、リソースフレーバー、アドミッションチェック、および対応するクラスターリソース定義 (CRD) などの Red Hat build of Kueue カスタムリソース
  • サービス
  • Endpoints
  • Webhook の設定
  • openshift-kueue-operator namespace および kueue-controller-manager Pod からのログ

収集されたデータは、デフォルトでは現在の作業ディレクトリー内の must-gather/ という名前の新しいディレクトリーに書き込まれます。

前提条件

  • Red Hat build of Kueue Operator がクラスターにインストールされている。
  • OpenShift CLI (oc) がインストールされている。

手順

  1. must-gather データを保存するディレクトリーに移動します。
  2. 次のコマンドを実行して、must-gather データを収集します。

    $ oc adm must-gather \
      --image=registry.redhat.io/kueue/kueue-must-gather-rhel9:<version>
    Copy to Clipboard Toggle word wrap

    <version> は、Red Hat build of Kueue の現在のバージョンです。

  3. 作業ディレクトリーに作成された must-gather ディレクトリーから圧縮ファイルを作成します。固有の must-gather データの日付とクラスター ID を必ず提供してください。クラスター ID を確認する方法の詳細は、How to find the cluster-id or name on OpenShift cluster を参照してください。
  4. Red Hat カスタマーポータルの カスタマーサポート ページ で、圧縮ファイルをサポートケースに添付します。

第3章 Leader Worker Set Operator

3.1. Leader Worker Set Operator の概要

AI/ML 推論に大規模言語モデル (LLM) を使用するには、多くの場合、大量のコンピュートリソースが必要です。通常はワークロードを複数のノードに分散する必要があります。そのため、デプロイメントが複雑になり、スケーリング、障害からの回復、効率的な Pod の配置に関する課題が生じる可能性があります。

Leader Worker Set Operator は、Pod のグループを 1 つの連携したユニットとして扱うことで、このようなマルチノードのデプロイメントを簡素化します。また、グループ内の各 Pod のライフサイクルを管理し、グループ全体をまとめてスケーリングし、グループレベルで更新と障害回復を実行して、一貫性を確保します。

3.1.1. Leader Worker Set Operator について

Leader Worker Set Operator は、LeaderWorkerSet オープンソースプロジェクトをベースにしています。LeaderWorkerSet は、Pod のグループをユニットとしてデプロイするために使用できるカスタム Kubernetes API です。これは、大規模言語モデル (LLM) が複数のノードに分散される人工知能 (AI) および機械学習 (ML) 推論ワークロードに役立ちます。

LeaderWorkerSet API を使用すると、Pod が 1 つのリーダーと複数のワーカーで構成されるユニットにグループ化され、すべての Pod が単一のエンティティーとしてまとめて管理されます。グループ内の各 Pod には、一意の Pod アイデンティティーがあります。グループ内の Pod は並行して作成され、同一のライフサイクルステージを共有します。ロールアウト、ローリング更新、および Pod 障害時の再起動は、グループとして実行されます。

LeaderWorkerSet の設定では、グループのサイズとグループのレプリカの数を定義します。必要に応じて、リーダー Pod とワーカー Pod に個別のテンプレートを定義して、ロール別のカスタマイズを行うことができます。また、同じグループ内の Pod が同じトポロジー内に配置されるように、トポロジーを考慮した配置を設定することもできます。

重要

Leader Worker Set Operator をインストールする前に、cert-manager Operator for Red Hat OpenShift をインストールする必要があります。これはサービスを設定し、メトリクス収集を管理するために必要です。

OpenShift Container Platform では、Leader Worker Set Operator のモニタリングが Prometheus を通じてデフォルトで提供されます。

3.1.1.1. LeaderWorkerSet のアーキテクチャー

次の図は、LeaderWorkerSet API が、分散ワークロードを連携させるために、1 つの Pod をリーダー、残りの Pod をワーカーとして、Pod のグループを 1 つのユニットに編成する方法を示しています。

図3.1 リーダーワーカーセットのアーキテクチャー

LeaderWorkerSet API は、リーダーステートフルセットを使用して、Pod グループのデプロイメントとライフサイクルを管理します。定義されたレプリカごとに、リーダーワーカーグループが作成されます。

各リーダーワーカーグループには、リーダー Pod とワーカーステートフルセットが含まれます。ワーカーステートフルセットは、リーダー Pod によって所有され、そのリーダー Pod に関連付けられたワーカー Pod のセットを管理します。size を指定すると、各リーダーワーカーグループ内の Pod の合計数が定義されます。その数にはリーダー Pod も含まれます。

3.2. Leader Worker Set Operator のリリースノート

Leader Worker Set Operator を使用すると、分散推論ワークロードを管理し、大規模な推論リクエストを効率的に処理できます。

このリリースノートは、Leader Worker Set Operator の開発履歴を記録したものです。

詳細は、Leader Worker Set Operator について を参照してください。

3.2.1. Leader Worker Set Operator 1.0.0 のリリースノート

発行日: 2025 年 9 月 18 日

Leader Worker Set Operator 1.0.0 では、次のアドバイザリーが利用可能です。

3.2.1.1. 新機能および機能拡張
  • これは、Leader Worker Set Operator の最初のリリースです。

3.3. Leader Worker Set Operator による分散ワークロードの管理

Leader Worker Set Operator を使用すると、分散推論ワークロードを管理し、大規模な推論リクエストを効率的に処理できます。

3.3.1. Leader Worker Set Operator のインストール

Leader Worker Set Operator は Web コンソールを使用してインストールできます。

前提条件

  • cluster-admin 権限でクラスターにアクセスできる。
  • OpenShift Container Platform Web コンソールにアクセスできる。
  • cert-manager Operator for Red Hat OpenShift がインストールされている。

手順

  1. OpenShift Container Platform Web コンソールにログインします。
  2. cert-manager Operator for Red Hat OpenShift がインストールされていることを確認します。
  3. Leader Worker Set Operator をインストールします。

    1. OperatorsOperatorHub に移動します。
    2. フィルターボックスに Leader Worker Set Operator と入力します。
    3. Leader Worker Set Operator を選択し、Install をクリックします。
    4. Install Operator ページで以下を行います。

      1. Update channelstable-v1.0 に設定します。これにより、Leader Worker Set Operator 1.0 の最新の安定版リリースがインストールされます。
      2. Installation mode で、A specific namespace on the cluster を選択します。
      3. Installed Namespace の下で、Operator recommended Namespace: openshift-lws-operator を選択します。
      4. Update approval で、次のいずれかの更新ストラテジーを選択します。

        • Automatic ストラテジーを使用すると、新しいバージョンが利用可能になったときに、Operator Lifecycle Manager (OLM) によって Operator を自動的に更新できます。
        • Manual ストラテジーには、Operator の更新を承認するための適切な認証情報を持つユーザーが必要です。
      5. Install をクリックします。
  4. Leader Worker Set Operator のカスタムリソース (CR) を作成します。

    1. Installed OperatorsLeader Worker Set Operator に移動します。
    2. Provided APIs の下にある LeaderWorkerSetOperator ペインで Create instance をクリックします。
    3. Create をクリックします。

3.3.2. リーダーワーカーセットのデプロイ

Leader Worker Set Operator を使用すると、リーダーワーカーセットをデプロイして、複数のノード間で分散されるワークロードの管理を支援できます。

前提条件

  • Leader Worker Set Operator をインストールした。

手順

  1. 次のコマンドを実行して新しいプロジェクトを作成します。

    $ oc new-project my-namespace
    Copy to Clipboard Toggle word wrap
  2. leader-worker-set.yaml という名前のファイルを作成します。

    apiVersion: leaderworkerset.x-k8s.io/v1
    kind: LeaderWorkerSet
    metadata:
      generation: 1
      name: my-lws 
    1
    
      namespace: my-namespace 
    2
    
    spec:
      leaderWorkerTemplate:
        leaderTemplate: 
    3
    
          metadata: {}
          spec:
            containers:
            - image: nginxinc/nginx-unprivileged:1.27
              name: leader
              resources: {}
        restartPolicy: RecreateGroupOnPodRestart 
    4
    
        size: 3 
    5
    
        workerTemplate: 
    6
    
          metadata: {}
          spec:
            containers:
            - image: nginxinc/nginx-unprivileged:1.27
              name: worker
              ports:
              - containerPort: 8080
                protocol: TCP
              resources: {}
      networkConfig:
        subdomainPolicy: Shared 
    7
    
      replicas: 2 
    8
    
      rolloutStrategy:
        rollingUpdateConfiguration:
          maxSurge: 1 
    9
    
          maxUnavailable: 1
        type: RollingUpdate
      startupPolicy: LeaderCreated
    Copy to Clipboard Toggle word wrap
    1
    リーダーワーカーセットのリソースの名前を指定します。
    2
    リーダーワーカーセットが実行される namespace を指定します。
    3
    リーダー Pod の Pod テンプレートを指定します。
    4
    Pod 障害が発生した場合の再起動ポリシーを指定します。使用できる値は、グループ全体を再起動する RecreateGroupOnPodRestart か、グループを再起動しない None です。
    5
    リーダー Pod を含む、各グループに作成する Pod の数を指定します。たとえば、値が 3 の場合、リーダー Pod 1 個とワーカー Pod 2 個が作成されます。デフォルト値は 1 です。
    6
    ワーカー Pod の Pod テンプレートを指定します。
    7
    ヘッドレスサービスを作成するときに使用するポリシーを指定します。使用できる値は UniquePerReplica または Shared です。デフォルト値は Shared です。
    8
    レプリカの数、つまりリーダーワーカーグループの数を指定します。デフォルト値は 1 です。
    9
    ローリング更新中に replicas 値を超えてスケジュールできるレプリカの最大数を指定します。値は整数またはパーセンテージで指定できます。

    設定可能なすべてのフィールドの詳細は、LeaderWorkerSet API のアップストリームドキュメントを参照してください。

  3. 次のコマンドを実行して、リーダーワーカーセットの設定を適用します。

    $ oc apply -f leader-worker-set.yaml
    Copy to Clipboard Toggle word wrap

検証

  1. 次のコマンドを実行して、Pod が作成されたことを確認します。

    $ oc get pods -n my-namespace
    Copy to Clipboard Toggle word wrap

    出力例

    NAME         READY   STATUS    RESTARTS   AGE
    my-lws-0     1/1     Running   0          4s 
    1
    
    my-lws-0-1   1/1     Running   0          3s
    my-lws-0-2   1/1     Running   0          3s
    my-lws-1     1/1     Running   0          7s 
    2
    
    my-lws-1-1   1/1     Running   0          6s
    my-lws-1-2   1/1     Running   0          6s
    Copy to Clipboard Toggle word wrap

    1
    最初のグループのリーダー Pod。
    2
    2 番目のグループのリーダー Pod。
  2. 次のコマンドを実行して、ステートフルセットを確認します。

    $ oc get statefulsets
    Copy to Clipboard Toggle word wrap

    出力例

    NAME       READY   AGE
    my-lws     4/4     111s 
    1
    
    my-lws-0   2/2     57s 
    2
    
    my-lws-1   2/2     60s 
    3
    Copy to Clipboard Toggle word wrap

    1
    すべてのリーダーワーカーグループのリーダーステートフルセット。
    2
    最初のグループのワーカーステートフルセット。
    3
    2 番目のグループのワーカーステートフルセット。

3.4. Leader Worker Set Operator のアンインストール

Leader Worker Set Operator を OpenShift Container Platform から削除するには、Operator をアンインストールし、関連リソースを削除します。

3.4.1. Leader Worker Set Operator のアンインストール

Leader Worker Set Operator は Web コンソールを使用してアンインストールできます。

前提条件

  • cluster-admin 権限でクラスターにアクセスできる。
  • OpenShift Container Platform Web コンソールにアクセスできる。
  • Leader Worker Set Operator をインストールした。

手順

  1. OpenShift Container Platform Web コンソールにログインします。
  2. OperatorsInstalled Operators に移動します。
  3. Project ドロップダウンリストから openshift-lws-operator を選択します。
  4. LeaderWorkerSetOperator インスタンスを削除します。

    1. Leader Worker Set Operator をクリックし、LeaderWorkerSetOperator タブを選択します。
    2. cluster エントリーの横にある Options メニュー kebab をクリックし、Delete LeaderWorkerSetOperator を選択します。
    3. 確認ダイアログで Delete をクリックします。
  5. Leader Worker Set Operator をアンインストールします。

    1. OperatorsInstalled Operators に移動します。
    2. Leader Worker Set Operator エントリーの横にある Options メニュー kebab をクリックし、Uninstall Operator をクリックします。
    3. 確認ダイアログで、Uninstall をクリックします。

3.4.2. Leader Worker Set Operator リソースのアンインストール

必要に応じて、Leader Worker Set Operator をアンインストールした後、クラスターから関連リソースを削除できます。

前提条件

  • cluster-admin 権限でクラスターにアクセスできる。
  • OpenShift Container Platform Web コンソールにアクセスできる。
  • Leader Worker Set Operator をアンインストールした。

手順

  1. OpenShift Container Platform Web コンソールにログインします。
  2. Leader Worker Set Operator をインストールしたときに作成された CRD を削除します。

    1. AdministrationCustomResourceDefinitions に移動します。
    2. Name フィールドに LeaderWorkerSetOperator と入力し、CRD をフィルタリングします。
    3. LeaderWorkerSetOperator CRD の横にある Options メニュー kebab をクリックし、Delete CustomResourceDefinition を選択します。
    4. 確認ダイアログで Delete をクリックします。
  3. openshift-lws-operator namespace を削除します。

    1. AdministrationNamespaces に移動します。
    2. フィルターボックスに openshift-lws-operator と入力します。
    3. openshift-lws-operator エントリーの横にある Options メニュー kebab をクリックし、Delete Namespace を選択します。
    4. 確認ダイアログで、openshift-lws-operator と入力し、Delete をクリックします。

Legal Notice

Copyright © 2025 Red Hat

OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).

Modified versions must remove all Red Hat trademarks.

Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.

Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.

Linux® is the registered trademark of Linus Torvalds in the United States and other countries.

Java® is a registered trademark of Oracle and/or its affiliates.

XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.

MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.

Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.

The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.

All other trademarks are the property of their respective owners.

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat