AI ワークロード
OpenShift Container Platform での 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 の概要」を参照してください。
- JobSet Operator (テクノロジープレビュー)
JobSet Operator を使用すると、高性能コンピューティング (HPC) や AI トレーニングなどの大規模で調整されたワークロードを簡単に管理および実行できます。JobSet Operator は、マルチテンプレートジョブのサポートや安定したネットワークなどの機能を通じて、迅速な回復と効率的なリソース使用を実現します。
詳細は、「JobSet 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 のワークフローは、次のように概説できます。
-
バッチ管理者が
ResourceFlavor、LocalQueue、およびClusterQueueリソースを作成および設定します。 - ユーザーがクラスターでジョブを作成します。
- Kubernetes API サーバーがジョブデータを検証して受け入れます。
-
Red Hat build of Kueue が、順序やクォータなどの設定されたオプションに基づいてジョブを許可します。リソースフレーバーを使用してジョブにアフィニティーを注入し、各ジョブに対応する
Workloadオブジェクトを作成します。 - ジョブタイプに応じた適切なコントローラーが Pod を作成します。
- Kubernetes スケジューラーが、クラスター内のノードに Pod を割り当てます。
- 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.3.1 のリリースノート リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Kueue バージョン 1.3.1 は一般提供版であり、OpenShift Container Platform バージョン 4.18 以降でサポートされています。Red Hat build of Kueue バージョン 1.3 は、Kueue バージョン 0.16.5 を使用しています。
2.2.2.1. 修正された問題 リンクのコピーリンクがクリップボードにコピーされました!
- kueue.x-k8s.io/queue-name は存在しないキューを参照しています
kueue.x-k8s.io/queue-name を介して存在しない LocalQueue を参照すると、実行中の Pod が終了し、削除できないスケジューリングゲートで永久に停止してしまうバグを修正しました。
2.2.3. Red Hat build of Kueue バージョン 1.3 のリリースノート リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Kueue バージョン 1.3 は一般提供版であり、OpenShift Container Platform バージョン 4.18 以降でサポートされています。Red Hat build of Kueue バージョン 1.3 は、Kueue バージョン 0.16 を使用しています。
2.2.3.1. 新機能および機能拡張 リンクのコピーリンクがクリップボードにコピーされました!
- Leader Worker Set Operator
- Red Hat build of Kueue バージョン 1.3 では、Leader Worker Set Operator と Red Hat build of Kueue の統合が実現されているため、LeaderWorkerSet を実行する際に、Red Hat build of Kueue とリソース管理機能を活用できます。詳細は、Leader Worker Set Operator の統合を 参照してください。
- JobSet Operator
- Red Hat build of Kueue バージョン 1.3 では、JobSet Operator の統合が実現されており、JobSet Operator を使用して、高性能コンピューティング (HPC) や AI トレーニングなどの大規模で協調的なワークロードを管理および実行できます。詳細は、JobSet Operator の統合を 参照してください。
- Red Hat build of Kueue API の
v1beta2へのアップストリーム開発 Red Hat build of Kueue バージョン 1.3 は、Red Hat build of Kueue API の
v1beta2バージョンを提供します。今回のアップデートは、Red Hat build of Kueue API の進化を継続するものであり、最終目標は API をv1にアップグレードすることです。アップグレード後に作成されるすべての新しい Kueue オブジェクトは、
v1beta2バージョンを使用して保存されます。以前のバージョンの API であるv1beta1は非推奨です。必要であれば、v1beta1を使用してオブジェクトを作成することも可能です。このような場合、非推奨メッセージが表示されます。ただし、既存のオブジェクトは、書き込みリクエスト時にのみ Kubernetes によって新しいストレージバージョンに自動的に変換されます。これは、トポロジー、リソースフレーバー、長時間実行されるワークロードなど、更新頻度の低い Red Hat build of Kueue API オブジェクトは、古い
v1beta1形式のまま無期限に残る可能性があることを意味します。
2.2.3.2. 修正された問題 リンクのコピーリンクがクリップボードにコピーされました!
- オプトインされた名前空間内のジョブのみを調整します
OpenShift Container Platform は、
kueue.x-k8s.io/queue-name ラベルを持つジョブリソースのリコンシリエーションを可能にしました。これらのリソースは、OpenShift Container Platform による管理をオプトインするように設定されていない名前空間にある場合でも調整可能です。今回のリリースでは、キュー名ラベルを持つジョブも、その名前空間がmanagedJobsNamespaceSelectorと一致しない限り無視されるように、この動作を更新するアップストリーム作業が進行中です。この変更により、Red Hat build of Kueue の動作がすべての統合において一貫性を持つようになります。- OpenShift Container Platform Web コンソールで
KueueCR の説明に "Not available" と表示される Red Hat build of Kueue をインストールした後、Operator の詳細 ビューで、
KueueCR の説明が利用不可と表示されます。この問題は、Red Hat build of Kueue オペレーターの機能に影響を与えたり、機能を低下させたりすることはありませんでした。今回のリリースにより、利用できませんというメッセージは表示されなくなりました。- LeaderWorkset および Jobset の検証エラー
現在、Leader Worker Set Operator とジョブセット Operator は、オペランド CR が更新され、Kueue 階層全体 (ResourceFlavor、ClusterQueue、および LocalQueue) が確立された後にのみ検証されます。設定エラーは、LeaderWorkerSet または JobSet テンプレートを適用した場合にのみ発生します。
2.2.3.3. 既知の問題 リンクのコピーリンクがクリップボードにコピーされました!
- LeaderWorkerSet Pod はデフォルトでは順次更新されます
Red Hat build of Kueue インストールに Leader Worker Set Operator を統合していて、LeaderWorkerSet Pod の更新にロールアウトストラテジーオプションを使用している場合は、OpenShift Container Platform の
MaxUnavailableフィーチャーゲートがデフォルトで無効になっていることに注意してください。LeaderWorkerSetPod に変更が加えられると、ローリングアップデートがトリガーされます。この処理では、デプロイメント内の古い Pod を新しい Pod に徐々に置き換え、ダウンタイムを回避するためにできるだけ多くの Pod を稼働状態に保ちます。OpenShift Container Platform のデフォルト設定である
MaxUnavailableが無効になっている場合、Pod は一度に 1 つずつ更新されます。アップデートを順次実行するのではなく、並行して実行したい場合は、
MaxUnavailableフィーチャーゲートを有効にする必要があります。詳細は、インストール時の機能セットの有効化 および 展開ストラテジー を参照してください。
2.2.4. Red Hat build of Kueue バージョン 1.2 のリリースノート リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Kueue バージョン 1.2 は一般提供版であり、OpenShift Container Platform バージョン 4.18 以降でサポートされています。Red Hat build of Kueue バージョン 1.2 は、Kueue バージョン 0.14 を使用しています。
2.2.4.1. 新機能および機能拡張 リンクのコピーリンクがクリップボードにコピーされました!
- 保留中のワークロードの監視
-
Red Hat build of Kueue バージョン 1.2 では、クラスターキューとローカルキュー内の保留中のジョブのパイプラインを監視し、ジョブの開始時期をユーザーが予測できるようにする
VisibilityOnDemand機能が提供されています。詳細は、保留中のワークロードの監視を 参照してください。
2.2.4.2. 修正された問題 リンクのコピーリンクがクリップボードにコピーされました!
- Red Hat build of Kueue をアンインストールしても、カスタムリソースが適切に削除されない
OpenShift Container Platform Web コンソールで [ このオペレーターのすべてのオペランドインスタンスを削除] オプションを使用して Red Hat ビルドの Kueue Operator をアンインストールした後、Red Hat build of Kueue カスタムリソースの削除が試みられました。今回のリリースでは、それらは削除対象とはみなされません。
- Red Hat build of Kueue の以前のバージョンにおけるドキュメントの誤り
Kueue カスタムリソースの作成 において、オプションのワークロードタイプである
Pod、デプロイメント、StatefulSetは省略されました。それらは現在含まれています。- Red Hat build of Kueue メトリクスは、バージョン 1.1 以降、Prometheus に公開されていませんでした。
ServiceMonitor と RBAC リソースは Operator のインストール時に正常に作成されたにもかかわらず、Prometheus は Operator のコントローラーからメトリクスを収集していませんでした。その結果、Kueue のメトリクスはどれもクラスターモニタリングスタックで利用できませんでした。
インストール時に追加されたメトリクスサービスの設定に誤ったポート参照が使用されていたため、Prometheus が Kueue エンドポイントからメトリクスを収集できずに失敗した。ポート名が正しいポート名に更新されました。
2.2.4.3. 既知の問題 リンクのコピーリンクがクリップボードにコピーされました!
- オプトインされた名前空間内のジョブのみを調整します
OpenShift Container Platform では、
kueue.x-k8s.io/queue-name ラベルを持つジョブリソースのリコンシリエーションが可能です。これらのリソースが、OpenShift Container Platform による管理をオプトインするように設定されていない名前空間にある場合でも調整が可能です。これは、Pod、デプロイメント、ステートフルセットなどの他のコア統合の動作とは矛盾しています。これらの統合は、kueue.openshift.io/managed=true を追加して OpenShift Container Platform による管理をオプトインするように設定された名前空間にある場合にのみ調整されます。- OpenShift Container Platform Web コンソールで
KueueCR の説明に "Not available" と表示される Red Hat build of Kueue をインストールした後、Operator の詳細 ビューで、
KueueCR の説明が利用不可と表示されます。この問題は、Red Hat build of Kueue Operator の機能に影響を与えるものでも、その機能を低下させるものでもありません。
2.2.5. 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.5.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 でサポートされるようになりました。
2.2.5.2. 修正された問題 リンクのコピーリンクがクリップボードにコピーされました!
- OpenShift Container Platform Web コンソールを使用して、
Kueueカスタムリソースを作成できます。 この更新前は、OpenShift Container Platform Web コンソールを使用してフォームビューで
Kueueカスタムリソース (CR) を作成しようとすると、Web コンソールにエラーが表示され、リソースを作成できませんでした。このリリースでは、KueueCR テンプレートからデフォルトの namespace が削除されました。その結果、OpenShift Container Platform Web コンソールを使用して、フォームビューでKueueCR を作成できるようになりました。
2.2.5.3. 既知の問題 リンクのコピーリンクがクリップボードにコピーされました!
- OpenShift Container Platform Web コンソールで
KueueCR の説明に "Not available" と表示される Red Hat build of Kueue をインストールすると、Operator details ビューで、
KueueCR の説明に "Not available" と表示されます。この問題は、Red Hat build of Kueue Operator の機能に影響を与えるものでも、その機能を低下させるものでもありません。- 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 というステータスとともに表示されます。回避策として、リソースのファイナライザーを手動で削除すると、完全に削除できます。
2.2.6. 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.6.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-managerPod の準備が完了すると、OpenShift Container Platform コンソールで Operator が準備完了として表示されます。(OCPBUGS-59261) -
以前は、
Kueueカスタムリソース (CR) がopenshift-kueue-operatornamespace から削除されても、kueue-manager-configconfig map は自動的に削除されず、その namespace に残る可能性がありました。このリリースでは、KueueCR が削除されると、kueue-manager-configconfig map、kueue-webhook-server-certシークレット、およびmetrics-server-certシークレットが自動的に削除されます。(OCPBUGS-57960)
2.2.7. 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.7.1. 新機能および機能拡張 リンクのコピーリンクがクリップボードにコピーされました!
- ロールベースアクセス制御 (RBAC)
- ロールベースアクセス制御 (RBAC) を使用すると、どのタイプのユーザーがどのタイプの Red Hat build of Kueue リソースを作成できるかを制御できます。
- リソースクォータの設定
- クラスターキュー、リソースフレーバー、およびローカルキューを作成してリソースクォータを設定すると、ユーザーが送信したジョブとワークロードで使用されるリソースの量を制御できます。
- ジョブおよびワークロード管理の制御
- namespace にラベルを付け、ラベルポリシーを設定すると、Red Hat build of Kueue によって管理されるジョブとワークロードを制御できます。
- キュー間での借用可能なリソースの共有
- コホート、フェアシェアリング、ギャングスケジューリングの設定を行うと、未使用の借用可能なリソースをキュー間で共有できるようになります。
2.2.7.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 内にある場合にのみリコンサイルされます。- OpenShift Container Platform Web コンソールを使用して
Kueueカスタムリソースを作成できない OpenShift Container Platform Web コンソールを使用してフォームビューで
Kueueカスタムリソース (CR) を作成しようとすると、Web コンソールにエラーが表示され、リソースを作成できません。回避策として、代わりに YAML ビューを使用してKueueCR を作成します。
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 をインストールして設定した。
手順
- OpenShift Container Platform Web コンソールで、Operators → OperatorHub をクリックします。
- 利用可能な Operator の一覧から Red Hat Build of Kueue Operator を選択し、Install をクリックします。
Enable Operator recommended cluster monitoring on this Namespace を選択します。
このオプションは、namespace オブジェクトに
openshift.io/cluster-monitoring: "true"ラベルを設定します。クラスター監視がopenshift-kueue-operator名前空間を確実にスクレイピングするには、このオプションを選択する必要があります。Install をクリックします。
注記または、YAML を使用して
Namespaceオブジェクトを作成する場合は、openshift.io/cluster-monitoring: "true"ラベルを含めるようにしてください。+
apiVersion: v1 kind: Namespace metadata: labels: openshift.io/cluster-monitoring: "true" name: openshift-kueue-operator
検証
- Operators → Installed Operators に移動し、Red Hat Build of Kueue Operator の Status が Succeeded と表示されていることを確認します。
2.3.3. Red Hat build of Kueue のアップグレード リンクのコピーリンクがクリップボードにコピーされました!
以前に Red Hat build of Kueue をインストールしたことがある場合、最新のバグ修正と機能拡張を使用するには、デプロイメントを手動で最新バージョンにアップグレードする必要があります。
前提条件
- 以前のバージョンの Red Hat build of Kueue がインストールされている。
- クラスター管理者の権限で OpenShift Container Platform Web コンソールにログインしている。
手順
- OpenShift Container Platform Web コンソールで、Operators → Installed Operator をクリックし、リストから Red Hat build of Kueue を選択します。
- Actions ドロップダウンメニューから、Uninstall Operator を選択します。
Uninstall Operator? ダイアログボックスが開きます。Uninstall をクリックします。
重要Uninstall をクリックする前に Delete all operand instances for this operator チェックボックスをオンにすると、次の既存のリソースを含むすべてのリソースがクラスターから削除されます。
-
KueueCR - 作成したクラスターキュー、ローカルキュー、またはリソースフレーバー
クラスターをアップグレードする際に作成したリソースを保持するには、このボックスをオフのままにしておきます。
-
- OpenShift Container Platform Web コンソールで、Operators → OperatorHub をクリックします。
- 利用可能な Operator の一覧から Red Hat Build of Kueue Operator を選択し、Install をクリックします。
検証
- Operators → Installed Operators に移動します。
- Red Hat Build of Kueue Operator の Status が Succeeded と表示されていることを確認します。
- リスト内の 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 コンソールにアクセスできる。
手順
- OpenShift Container Platform Web コンソールで、Operators → Installed Operators をクリックします。
- Provided APIs テーブル列で、Kueue をクリックします。これにより、Operator details ページの Kueue タブに移動します。
- Create Kueue をクリックします。これにより、Create Kueue YAML ビューに移動します。
KueueCR の詳細を入力します。KueueCR の例apiVersion: kueue.openshift.io/v1 kind: Kueue metadata: labels: app.kubernetes.io/name: kueue-operator app.kubernetes.io/managed-by: kustomize name: cluster1 namespace: openshift-kueue-operator spec: managementState: Managed config: integrations: frameworks:2 - BatchJob preemption: preemptionPolicy: Classical3 # ...- Create をクリックします。
検証
-
KueueCR を作成すると、Web コンソールに Operator details ページが表示され、Kueues のリストに CR が表示されます。 オプション: OpenShift CLI (
oc) がインストールされている場合は、次のコマンドを実行し、出力を確認してKueueCR が正常に作成されたことを確認できます。$ oc get kueue出力例
NAME AGE cluster 4m
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
このラベルを追加すると、その 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 をインストールして設定した。
手順
- OpenShift Container Platform Web コンソールで、Operators → OperatorHub をクリックします。
- 利用可能な Operator の一覧から Red Hat Build of Kueue Operator を選択し、Install をクリックします。
Enable Operator recommended cluster monitoring on this Namespace を選択します。
このオプションは、namespace オブジェクトに
openshift.io/cluster-monitoring: "true"ラベルを設定します。クラスター監視がopenshift-kueue-operator名前空間を確実にスクレイピングするには、このオプションを選択する必要があります。Install をクリックします。
注記または、YAML を使用して
Namespaceオブジェクトを作成する場合は、openshift.io/cluster-monitoring: "true"ラベルを含めるようにしてください。+
apiVersion: v1 kind: Namespace metadata: labels: openshift.io/cluster-monitoring: "true" name: openshift-kueue-operator
検証
- Operators → Installed Operators に移動し、Red Hat Build of Kueue Operator の Status が Succeeded と表示されていることを確認します。
2.4.3. Red Hat build of Kueue のアップグレード リンクのコピーリンクがクリップボードにコピーされました!
以前に Red Hat build of Kueue をインストールしたことがある場合、最新のバグ修正と機能拡張を使用するには、デプロイメントを手動で最新バージョンにアップグレードする必要があります。
前提条件
- 以前のバージョンの Red Hat build of Kueue がインストールされている。
- クラスター管理者の権限で OpenShift Container Platform Web コンソールにログインしている。
手順
- OpenShift Container Platform Web コンソールで、Operators → Installed Operator をクリックし、リストから Red Hat build of Kueue を選択します。
- Actions ドロップダウンメニューから、Uninstall Operator を選択します。
Uninstall Operator? ダイアログボックスが開きます。Uninstall をクリックします。
重要Uninstall をクリックする前に Delete all operand instances for this operator チェックボックスをオンにすると、次の既存のリソースを含むすべてのリソースがクラスターから削除されます。
-
KueueCR - 作成したクラスターキュー、ローカルキュー、またはリソースフレーバー
クラスターをアップグレードする際に作成したリソースを保持するには、このボックスをオフのままにしておきます。
-
- OpenShift Container Platform Web コンソールで、Operators → OperatorHub をクリックします。
- 利用可能な Operator の一覧から Red Hat Build of Kueue Operator を選択し、Install をクリックします。
検証
- Operators → Installed Operators に移動します。
- Red Hat Build of Kueue Operator の Status が Succeeded と表示されていることを確認します。
- リスト内の 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 コンソールにアクセスできる。
手順
- OpenShift Container Platform Web コンソールで、Operators → Installed Operators をクリックします。
- Provided APIs テーブル列で、Kueue をクリックします。これにより、Operator details ページの Kueue タブに移動します。
- Create Kueue をクリックします。これにより、Create Kueue YAML ビューに移動します。
KueueCR の詳細を入力します。KueueCR の例apiVersion: kueue.openshift.io/v1 kind: Kueue metadata: labels: app.kubernetes.io/name: kueue-operator app.kubernetes.io/managed-by: kustomize name: cluster1 namespace: openshift-kueue-operator spec: managementState: Managed config: integrations: frameworks:2 - BatchJob preemption: preemptionPolicy: Classical3 # ...- Create をクリックします。
検証
-
KueueCR を作成すると、Web コンソールに Operator details ページが表示され、Kueues のリストに CR が表示されます。 オプション: OpenShift CLI (
oc) がインストールされている場合は、次のコマンドを実行し、出力を確認してKueueCR が正常に作成されたことを確認できます。$ oc get kueue出力例
NAME AGE cluster 4m
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
このラベルを追加すると、その namespace を Webhook アドミッションコントローラーによって管理するよう Red Hat build of Kueue Operator に指示することになります。その結果、その namespace 内の Red Hat build of Kueue リソースが適切に検証され、変更されるようになります。
2.5. Leader Worker Set Operator の統合 リンクのコピーリンクがクリップボードにコピーされました!
Leader Worker Set Operator を Red Hat build of Kueue と統合することで、LeaderWorkerSets を実行する際にスケジューリング機能とリソース管理機能を活用できます。
Leader Worker Set Operator を使用すると、マルチノードの AI/ML 推論デプロイメントを効率的に管理できます。Red Hat build of Kueue は、これらのデプロイメントのためのスケジューリングおよびリソース管理機能を提供します。LeaderWorkerSet API を実行して、Pod のグループをレプリケーション単位としてデプロイする際に、これらの機能を活用できるように Leader Worker Set Operator を設定できます。
2.5.1. Red Hat build of Kueue を使用して Leader Worker Set Operator をインストールする リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Kueue を Leader Worker Set Operator と連携するように設定できます。
前提条件
- ソフトウェアカタログにある Red Hat ビルドの Kueue Operator を使用して、Red Hat build of Kueue をインストールしました。
- ソフトウェアカタログから、Leader Worker Set Operator と Operand をインストールしました。
-
クラスター管理者権限および
kueue-batch-admin-roleロールがある。 - OpenShift Container Platform Web コンソールにアクセスできる。
- クラスターに cert-manager Operator for Red Hat OpenShift をインストールしました。
手順
次の例に示すように、Red Hat build of Kueue クラスターオブジェクトの
config.integrations.frameworkセクションにLeaderWorkerSet を追加します。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: managementState: Managed config: integrations: frameworks: - BatchJob - LeaderWorkerSet
2.5.2. Red Hat ビルドの Kueue で Leader Worker Set Operator を実行する リンクのコピーリンクがクリップボードにコピーされました!
Leader Worker Set Operator は、既存のフレームワークに追加して実行できます。
前提条件
- Red Hat build of Kueue Operator を使用して、Red Hat Build の Kueue がインストールされます。
- Leader Worker Set Operator と Operand がインストールされています。
- cert-manager Operator for Red Hat OpenShift がインストールされている。
-
LeaderWorkerSetが作成される名前空間には、kueue.openshift.io/managed=trueを使用してラベルが付けられます。 以下のオブジェクトが設定されていることを確認してください。
-
クラスターキュー -
リソースフレーバー -
ローカルキュー -
Namespace
-
手順
leaderworkerset.yamlという名前のファイルを作成します。LeaderWorkerSetの例apiVersion: leaderworkerset.x-k8s.io/v1 kind: LeaderWorkerSet metadata: generation: 1 name: my-lws namespace: my-namespace spec: leaderWorkerTemplate: leaderTemplate: metadata: {} spec: containers: - image: nginxinc/nginx-unprivileged:1.27 name: leader resources: {} restartPolicy: RecreateGroupOnPodRestart size: 3 workerTemplate: metadata: {} spec: containers: - image: nginxinc/nginx-unprivileged:1.27 name: worker ports: - containerPort: 8080 protocol: TCP resources: {} networkConfig: subdomainPolicy: Shared replicas: 2 rolloutStrategy: rollingUpdateConfiguration: maxSurge: 1 maxUnavailable: 1 type: RollingUpdate startupPolicy: LeaderCreatedLeaderWorkerSet設定のmetadata.labelsセクションで、ターゲットとなるローカルキューを指定してください。metadata: labels: kueue.x-k8s.io/queue-name: user-queue次のコマンドを実行して、リーダーワーカーセットの設定を適用します。
$ oc apply -f leaderworkerset.yaml
2.6. JobSetOperator の統合 リンクのコピーリンクがクリップボードにコピーされました!
JobSet Operator を Red Hat build of Kueue と統合することで、JobSet Operator の実行時に、Red Hat build of Kueue が提供するスケジューリング機能とリソース管理機能を活用できます。
JobSet Operator を使用すると、高性能コンピューティング (HPC) や AI トレーニングなどの大規模で協調的なワークロードを管理および実行できます。
JobSet Operator は、分散バッチワークロードを Kubernetes ジョブのグループとしてモデル化します。これにより、リーダー、ワーカー、パラメーターサーバーなど、異なる Pod のグループごとに異なる Pod テンプレートを簡単に指定できます。
2.6.1. Red Hat build of Kueue を使用して JobSet Operator をインストールする リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Kueue を JobSet オペレーターと連携するように設定できます。
前提条件
- ソフトウェアカタログにある Red Hat ビルドの Kueue Operator を使用して、Red Hat build of Kueue をインストールしました。
- ソフトウェアカタログから JobSet Operator をインストールしました。
-
クラスター管理者権限および
kueue-batch-admin-roleロールがある。 - OpenShift Container Platform Web コンソールにアクセスできる。
- クラスターに cert-manager Operator for Red Hat OpenShift をインストールしました。
手順
次の例に示すように、Red Hat build of Kueue クラスターオブジェクトの
config.integrations.frameworksセクションにJobSet を追加します。apiVersion: kueue.openshift.io/v1 kind: Kueue metadata: name: cluster namespace: openshift-kueue-operator spec: managementState: Managed config: integrations: frameworks: - JobSet
2.6.2. Red Hat build of Kueue を使用して JobSet Operator を実行する リンクのコピーリンクがクリップボードにコピーされました!
JobSet Operator は、既存のフレームワークに追加して実行できます。
前提条件
- Red Hat build of Kueue Operator を使用して、Red Hat Build の Kueue がインストールされます。
- JobSet Operator がインストールされています。
- cert-manager Operator for Red Hat OpenShift がインストールされている。
-
JobSetが作成される名前空間には、kueue.openshift.io/managed=true というラベルが付けられます。 以下のオブジェクトが設定されていることを確認してください。
-
クラスターキュー -
リソースフレーバー -
ローカルキュー -
Namespace
-
手順
jobset.yamlという名前のファイルを作成します。ジョブセットの例apiVersion: jobset.x-k8s.io/v1alpha2 kind: JobSet metadata: name: jobset namespace: my-namespace spec: replicatedJobs: - name: workers replicas: 1 template: spec: parallelism: 3 completions: 3 backoffLimit: 1 template: spec: containers: - name: sleep image: busybox resources: requests: cpu: 200m memory: "200Mi" command: - sleep args: - 220s - name: driver template: spec: parallelism: 1 completions: 1 backoffLimit: 0 template: spec: containers: - name: sleep image: busybox resources: requests: cpu: 200m memory: "200Mi" command: - sleep args: - 220sJobSet設定のmetadata.labelsセクションで、ターゲットとなるローカルキューを指定してください。metadata: labels: kueue.x-k8s.io/queue-name: <local-queue-name>以下のコマンドを実行して、JobSet の設定を適用してください。
$ oc apply -f jobset.yaml
2.7. ロールベースの権限の設定 リンクのコピーリンクがクリップボードにコピーされました!
以下の手順では、Red Hat build of Kueue デプロイメントでロールベースアクセス制御 (RBAC) を設定する方法を説明します。これらの RBAC 権限によって、どのタイプのユーザーがどのタイプの Red Hat build of Kueue オブジェクトを作成できるかが決まります。
2.7.1. クラスターロール リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Kueue Operator は、デフォルトで kueue-batch-admin-role および kueue-batch-user-role クラスターロールをデプロイします。
- kueue-batch-admin-role
- このクラスターロールには、クラスターキュー、ローカルキュー、ワークロード、およびリソースフレーバーを管理する権限が含まれます。
- kueue-batch-user-role
- このクラスターロールには、ジョブを管理し、ローカルキューとワークロードを表示する権限が含まれます。
2.7.2. バッチ管理者の権限の設定 リンクのコピーリンクがクリップボードにコピーされました!
kueue-batch-admin-role クラスターロールをユーザーまたはユーザーグループにバインドすることで、バッチ管理者の権限を設定できます。
前提条件
- Red Hat build of Kueue Operator がクラスターにインストールされている。
- クラスター管理者の権限がある。
-
OpenShift CLI (
oc) がインストールされている。
手順
ClusterRoleBindingオブジェクトを YAML ファイルとして作成します。ClusterRoleBindingオブジェクトの例apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: kueue-admins1 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.ioClusterRoleBindingオブジェクトを適用します。$ oc apply -f <filename>.yaml
検証
次のコマンドを実行し、出力に
kueue-batch-admin-roleクラスターロールの正しい情報が含まれていることを確認し、ClusterRoleBindingオブジェクトが正しく適用されたことを確認できます。$ oc describe clusterrolebinding.rbac出力例
... 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 ...
2.7.3. ユーザー権限の設定 リンクのコピーリンクがクリップボードにコピーされました!
kueue-batch-user-role クラスターロールをユーザーまたはユーザーグループにバインドすることで、Red Hat build of Kueue ユーザーの権限を設定できます。
前提条件
- Red Hat build of Kueue Operator がクラスターにインストールされている。
- クラスター管理者の権限がある。
-
OpenShift CLI (
oc) がインストールされている。
手順
RoleBindingオブジェクトを YAML ファイルとして作成します。ClusterRoleBindingオブジェクトの例apiVersion: rbac.authorization.k8s.io/v1 kind: RoleBinding metadata: name: kueue-users1 namespace: user-namespace2 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.ioRoleBindingオブジェクトを適用します。$ oc apply -f <filename>.yaml
検証
次のコマンドを実行し、出力に
kueue-batch-user-roleクラスターロールの正しい情報が含まれていることを確認し、RoleBindingオブジェクトが正しく適用されたことを確認できます。$ oc describe rolebinding.rbac出力例
... 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 ...
2.8. クォータの設定 リンクのコピーリンクがクリップボードにコピーされました!
管理者は、Red Hat build of Kueue を使用してクォータを設定し、ユーザーワークロードのリソース割り当てとシステムスループットを最適化できます。CPU、メモリー、Pod、GPU などのコンピュートリソースのクォータを設定できます。
以下の手順を実行すると、Red Hat build of Kueue でクォータを設定できます。
- クラスターキューを設定します。
- リソースフレーバーを設定します。
- ローカルキューを設定します。
その後、ユーザーはワークロードをローカルキューに送信できます。
2.8.1. クラスターキューの設定 リンクのコピーリンクがクリップボードにコピーされました!
クラスターキューは、ClusterQueue オブジェクトによって表されるクラスタースコープのリソースであり、CPU、メモリー、Pod などのリソースプールを管理します。クラスターキューを使用すると、使用制限、リソースフレーバーのクォータ、消費順序、フェアシェアリングルールを定義できます。
ResourceFlavor オブジェクトも設定されるまで、クラスターキューは使用可能になりません。
前提条件
- Red Hat build of Kueue Operator がクラスターにインストールされている。
-
クラスター管理者権限または
kueue-batch-admin-roleロールがある。 -
OpenShift CLI (
oc) がインストールされている。
手順
ClusterQueueオブジェクトを YAML ファイルとして作成します。単一のリソースフレーバーを使用した基本的な
ClusterQueueオブジェクトの例apiVersion: kueue.x-k8s.io/v1beta2 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- 1
- このクラスターキューが管理するリソースを使用できる namespace を定義します。例に示すように、空の
namespaceSelectorは、すべての namespace がこれらのリソースを使用できることを意味します。 - 2
- クラスターキューによって管理されるリソースタイプを定義します。この例では、
ClusterQueueオブジェクトは CPU、メモリー、Pod、および GPU リソースを管理します。 - 3
- リストされているリソースタイプに適用されるリソースフレーバーを定義します。この例では、
default-flavorリソースフレーバーが CPU、メモリー、Pod、および GPU リソースに適用されます。 - 4
- ジョブを許可するリソース要件を定義します。このサンプルクラスターキューは、次の条件が満たされた場合にのみジョブを許可します。
- CPU 要求の合計は 9 以下です。
- メモリー要求の合計は 36Gi 以下です。
- Pod の合計数は 5 以下です。
- GPU リクエストの合計は 100 以下です。
次のコマンドを実行して、
ClusterQueueオブジェクトを適用します。$ oc apply -f <filename>.yaml
2.8.2. リソースフレーバーの設定 リンクのコピーリンクがクリップボードにコピーされました!
ClusterQueue オブジェクトを設定したら、ResourceFlavor オブジェクトを設定できます。
クラスター内のリソースは通常、同種ではありません。クラスター内のリソースが同種である場合は、カスタムリソースフレーバーにラベルを追加する代わりに、空の ResourceFlavor を使用できます。
カスタム ResourceFlavor オブジェクトを使用すると、ラベル、taint、および toleration を通じてクラスターノードに関連付けられているさまざまなリソースのバリエーションを表すことができます。その後、ワークロードを特定のノードタイプに関連付けて、きめ細かなリソース管理が可能になります。
前提条件
- Red Hat build of Kueue Operator がクラスターにインストールされている。
-
クラスター管理者権限または
kueue-batch-admin-roleロールがある。 -
OpenShift CLI (
oc) がインストールされている。
手順
ResourceFlavorオブジェクトを YAML ファイルとして作成します。空の
ResourceFlavorオブジェクトの例apiVersion: kueue.x-k8s.io/v1beta2 kind: ResourceFlavor metadata: name: default-flavorカスタム
ResourceFlavorオブジェクトの例apiVersion: kueue.x-k8s.io/v1beta2 kind: ResourceFlavor metadata: name: "x86" spec: nodeLabels: cpu-arch: x86以下のコマンドを実行して
ResourceFlavorオブジェクトを適用します。$ oc apply -f <filename>.yaml
2.8.3. ローカルキューの設定 リンクのコピーリンクがクリップボードにコピーされました!
ローカルキューは、LocalQueue オブジェクトによって表される namespace オブジェクトであり、単一の namespace に属する密接に関連するワークロードをグループ化します。
管理者は、LocalQueue オブジェクトをクラスターキューを指すように設定できます。これにより、クラスターキューのリソースが、LocalQueue オブジェクトで指定された namespace 内のワークロードに割り当てられます。
前提条件
- Red Hat build of Kueue Operator がクラスターにインストールされている。
-
クラスター管理者権限または
kueue-batch-admin-roleロールがある。 -
OpenShift CLI (
oc) がインストールされている。 -
ClusterQueueオブジェクトを作成している。
手順
LocalQueueオブジェクトを YAML ファイルとして作成します。基本的な
LocalQueueオブジェクトの例apiVersion: kueue.x-k8s.io/v1beta2 kind: LocalQueue metadata: namespace: team-namespace name: user-queue spec: clusterQueue: cluster-queue次のコマンドを実行して、
LocalQueueオブジェクトを適用します。$ oc apply -f <filename>.yaml
2.8.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オブジェクトを作成している。
手順
defaultという名前のLocalQueueオブジェクトを YAML ファイルとして作成します。デフォルトの
LocalQueueオブジェクトの例apiVersion: kueue.x-k8s.io/v1beta2 kind: LocalQueue metadata: namespace: team-namespace name: default spec: clusterQueue: cluster-queue次のコマンドを実行して、
LocalQueueオブジェクトを適用します。$ oc apply -f <filename>.yaml
検証
- デフォルトのローカルキューと同じ namespace にジョブを作成します。
-
ジョブが
kueue.x-k8s.io/queue-name: defaultラベルで更新されることを確認します。
2.9. ジョブおよびワークロードの管理 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Kueue は、ユーザーが作成したジョブを直接操作しません。代わりに、Kueue はジョブのリソース要件を表す Workload オブジェクトを管理します。Red Hat build of Kueue は、各ジョブのワークロードを自動的に作成し、2 つのオブジェクト間の決定とステータスを同期します。
2.9.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
このラベルを追加すると、その namespace を Webhook アドミッションコントローラーによって管理するよう Red Hat build of Kueue Operator に指示することになります。その結果、その namespace 内の Red Hat build of Kueue リソースが適切に検証され、変更されるようになります。
2.9.2. ジョブのラベルポリシーの設定 リンクのコピーリンクがクリップボードにコピーされました!
Kueue カスタムリソース (CR) の spec.config.workloadManagement.labelPolicy 仕様は、Red Hat build of Kueue がさまざまなジョブを管理するか無視するかを決定する方法を制御する省略可能なフィールドです。使用できる値は QueueName、None、および空 ("") です。
labelPolicy 設定が省略されているか、空 ("") の場合、デフォルトのポリシーとして、Red Hat build of Kueue は kueue.x-k8s.io/queue-name ラベルを持つジョブを管理し、kueue.x-k8s.io/queue-name ラベルを持たないジョブを無視します。これは、labelPolicy が QueueName に設定されている場合と同じワークフローです。
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
# ...
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:
# ...
2.10. 保留中のワークロードを監視する リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Kueue は、保留中のワークロードを監視するための VisibilityOnDemand 機能を提供します。ワークロードとは、実行が完了してから終了するアプリケーションのことです。それは、1 つまたは複数の Pod で設定され、それらが緩やかに、あるいは密接に結合することで、全体としてタスクを完了する。ワークロードは、Red Hat build of Kueue における受け入れ単位です。
VisibilityOnDemand 機能は、バッチ管理者がクラスターキューとローカルキュー内の保留中のジョブのパイプラインを監視できる機能と、バッチユーザーがローカルキューのみを監視できる機能を提供し、ユーザーがジョブの開始時期を予測するのに役立ちます。
受信リクエストやリクエスト量の多さを制御したり、保留中のワークロードを表示するためのユーザー権限を設定したりできます。
2.10.1. API の優先順位と公平性 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Kueue は、Kubernetes API の優先度と公平性 (APF) を利用して、保留中のワークロードを管理します。APF は、API サーバーへの受信リクエストを制御するための API レベルのポリシーを定義できるフロー制御メカニズムです。これは、API サーバーが予期せぬ高リクエスト量によって過負荷状態になるのを防ぐと同時に、重要なトラフィックがベストエフォート型のワークロードに対するスロットリング効果を受けないように保護します。
2.10.2. ユーザー権限の付与 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Kueue デプロイメントのユーザーに対して、ロールベースアクセス制御 (RBAC) オブジェクトを設定できます。これらのオブジェクトは、どのタイプのユーザーがどのタイプの Red Hat build of Kueue オブジェクトを作成できるかを決定します。
特定の API へのアクセスを必要とするユーザーには、適切な権限を付与する必要があります。
-
ユーザーが
ClusterQueueリソースからの保留中のワークロードにアクセスする必要がある場合は、ClusterRolekueue-batch-admin-roleを参照するClusterRoleBindingスキーマを作成する必要があります。 -
ユーザーが
LocalQueueリソースからの保留中のワークロードにアクセスする必要がある場合は、ClusterRolekueue-batch-user-roleを参照するRoleBindingスキーマを作成する必要があります。
2.10.3. オンデマンドで保留中のワークロードを監視する リンクのコピーリンクがクリップボードにコピーされました!
保留中のワークロードの監視をテストするには、ClusterQueue と LocalQueue の 両方のリソースを正しく設定する必要があります。その後、その ローカルキュー にジョブを作成できます。Kueue はジョブから作成されたワークロードオブジェクトを管理するため、ジョブが送信されて クラスターキューが 飽和状態になると、対応するワークロードが保留中のワークロードのリストに表示されます。
前提条件
- クラスター管理者の権限がある。
-
Red Hat build of Kueue Operator がクラスターにインストールされ、
Kueueカスタムリソース (CR) が作成されている。 -
OpenShift CLI (
oc) がインストールされている。 -
OpenShift CLI (
oc) は、クラスターと通信します。
以下の手順では、ワークロード監視のインストール方法とテスト方法について説明します。
手順
以下のコマンドを実行してアセットを作成します。
cat <<EOF| oc create -f - --- apiVersion: kueue.x-k8s.io/v1beta2 kind: ResourceFlavor metadata: name: "default-flavor" --- apiVersion: kueue.x-k8s.io/v1beta2 kind: ClusterQueue metadata: name: "cluster-queue" spec: namespaceSelector: {} # match all. resourceGroups: - coveredResources: ["cpu", "memory"] flavors: - name: "default-flavor" resources: - name: "cpu" nominalQuota: 9 - name: "memory" nominalQuota: 36Gi --- apiVersion: kueue.x-k8s.io/v1beta2 kind: LocalQueue metadata: namespace: "default" name: "user-queue" spec: clusterQueue: "cluster-queue" --- EOFジョブマニフェストを含む以下のファイルを作成してください。
cat >> job.yaml << EOF apiVersion: batch/v1 kind: Job metadata: generateName: sample-job- namespace: default labels: kueue.x-k8s.io/queue-name: user-queue spec: parallelism: 3 completions: 3 suspend: true template: spec: containers: - name: <example-job> image: registry.k8s.io/e2e-test-images/agnhost:2.53 command: [ "/bin/sh" ] args: [ "-c", "sleep 60" ] resources: requests: cpu: "1" memory: "200Mi" restartPolicy: Never EOF以下のコマンドを実行して、Kueue が管理するデフォルトの名前空間にラベルを付けます。
$ oc label namespace default kueue.openshift.io/managed=true以下のコマンドを実行して、6 つのジョブを作成します。
for i in {1..6}; do oc create -f job.yaml; doneこの例では、3 つのジョブが
ClusterQueueリソースを飽和させており、残りの 3 つのジョブは保留状態になっているはずです。
2.10.3.1. ClusterQueue で保留中のワークロードを表示する リンクのコピーリンクがクリップボードにコピーされました!
クラスターレベルで保留中のすべてのワークロードを表示するには、管理者は Kueue の可視化 API の ClusterQueue オブジェクト可視化エンドポイントを使用できます。このエンドポイントは、現在その ClusterQueue リソースによる承認を待っているすべてのワークロードのリストを返します。
手順
ClusterQueueで保留中のワークロードを表示するには、次のコマンドを実行します。$ oc get --raw "/apis/visibility.kueue.x-k8s.io/v1beta2/clusterqueues/cluster-queue/pendingworkloads"出力例
{ "kind": "PendingWorkloadsSummary", "apiVersion": "visibility.kueue.x-k8s.io/v1beta2", "metadata": { "creationTimestamp": null }, "items": [ { "metadata": { "name": "job-sample-job-jrjfr-8d56e", "namespace": "default", "creationTimestamp": "2023-12-05T15:42:03Z", "ownerReferences": [ { "apiVersion": "batch/v1", "kind": "Job", "name": "sample-job-jrjfr", "uid": "5863cf0e-b0e7-43bf-a445-f41fa1abedfa" } ] }, "priority": 0, "localQueueName": "user-queue", "positionInClusterQueue": 0, "positionInLocalQueue": 0 }, { "metadata": { "name": "job-sample-job-jg9dw-5f1a3", "namespace": "default", "creationTimestamp": "2023-12-05T15:42:03Z", "ownerReferences": [ { "apiVersion": "batch/v1", "kind": "Job", "name": "sample-job-jg9dw", "uid": "fd5d1796-f61d-402f-a4c8-cbda646e2676" } ] }, "priority": 0, "localQueueName": "user-queue", "positionInClusterQueue": 1, "positionInLocalQueue": 1 }, { "metadata": { "name": "job-sample-job-t9b8m-4e770", "namespace": "default", "creationTimestamp": "2023-12-05T15:42:03Z", "ownerReferences": [ { "apiVersion": "batch/v1", "kind": "Job", "name": "sample-job-t9b8m", "uid": "64c26c73-6334-4d13-a1a8-38d99196baa5" } ] }, "priority": 0, "localQueueName": "user-queue", "positionInClusterQueue": 2, "positionInLocalQueue": 2 } ] }以下のオプションのクエリーパラメーターを渡すことができます。
制限値 < 整数 >- デフォルト値は 1000 です。取得すべき保留中のワークロードの最大数を指定します。
オフセット < 整数 >- 0 がデフォルト値です。0 から始まる、最初に取得すべき保留中のワークロードの位置を指定します。
ClusterQueue内の位置 0 から始まる保留中のワークロードを 1 つだけ表示するには、次のコマンドを実行します。$ oc get --raw "/apis/visibility.kueue.x-k8s.io/v1beta2/clusterqueues/cluster-queue/pendingworkloads?limit=1&offset=0"
2.10.3.2. LocalQueue で保留中のワークロードを表示する リンクのコピーリンクがクリップボードにコピーされました!
ユーザーは、特定のテナントがその名前空間内で送信した保留中のワークロードを表示するには、Kueue の可視性 API の LocalQueue リソース可視性エンドポイントにクエリーを実行できます。これにより、そのキューで待機しているジョブの順序付きリストが提供されます。
手順
LocalQueueで保留中のワークロードを表示するには、次のコマンドを実行します。$ oc get --raw /apis/visibility.kueue.x-k8s.io/v1beta2/namespaces/default/localqueues/user-queue/pendingworkloads出力例
{ "kind": "PendingWorkloadsSummary", "apiVersion": "visibility.kueue.x-k8s.io/v1beta2", "metadata": { "creationTimestamp": null }, "items": [ { "metadata": { "name": "job-sample-job-jrjfr-8d56e", "namespace": "default", "creationTimestamp": "2023-12-05T15:42:03Z", "ownerReferences": [ { "apiVersion": "batch/v1", "kind": "Job", "name": "sample-job-jrjfr", "uid": "5863cf0e-b0e7-43bf-a445-f41fa1abedfa" } ] }, "priority": 0, "localQueueName": "user-queue", "positionInClusterQueue": 0, "positionInLocalQueue": 0 }, { "metadata": { "name": "job-sample-job-jg9dw-5f1a3", "namespace": "default", "creationTimestamp": "2023-12-05T15:42:03Z", "ownerReferences": [ { "apiVersion": "batch/v1", "kind": "Job", "name": "sample-job-jg9dw", "uid": "fd5d1796-f61d-402f-a4c8-cbda646e2676" } ] }, "priority": 0, "localQueueName": "user-queue", "positionInClusterQueue": 1, "positionInLocalQueue": 1 }, { "metadata": { "name": "job-sample-job-t9b8m-4e770", "namespace": "default", "creationTimestamp": "2023-12-05T15:42:03Z", "ownerReferences": [ { "apiVersion": "batch/v1", "kind": "Job", "name": "sample-job-t9b8m", "uid": "64c26c73-6334-4d13-a1a8-38d99196baa5" } ] }, "priority": 0, "localQueueName": "user-queue", "positionInClusterQueue": 2, "positionInLocalQueue": 2 } ] }以下のオプションのクエリーパラメーターを渡すことができます。
制限値 < 整数 >- デフォルト値は 1000 です。取得すべき保留中のワークロードの最大数を指定します。
オフセット < 整数 >- 0 がデフォルト値です。0 から始まる、最初に取得すべき保留中のワークロードの位置を指定します。
LocalQueue 内の位置 0 から始まる保留中のワークロードを 1 つだけ表示するには、次のコマンドを実行します。
$ oc get --raw "/apis/visibility.kueue.x-k8s.io/v1beta2/namespaces/default/localqueues/user-queue/pendingworkloads?limit=1&offset=0"
2.10.4. 監視設定の変更 リンクのコピーリンクがクリップボードにコピーされました!
組織の要件に合わせて監視設定を変更し、ユーザーが保留中のワークロードにタイムリーかつ確実にアクセスして表示できるようにしてください。
この手順では、Red Hat build of Kueue VisibilityOnDemand 機能のリソースフロー制御を変更する方法について説明します。変更内容は、求人情報に関する同時リクエストを処理するシステムの能力に直接影響を与えます。
手順
次のコマンドを実行して、
KueueのVisibilityOnDemandのPriorityLevelConfigurationアセットを編集します。$ oc edit prioritylevelconfiguration kueue-visibilityPriorityLevelConfigurationアセットのnominalConcurrencySharesフィールドを、kueue.openshift.io/allow-nominal-concurrency-shares-update の値をtrueに設定して変更します。nominalConcurrencySharesに指定できる値は、0、2(デフォルト値) から5までです。許容されない値 (値1または5より大きい値) を指定した場合、デフォルト値の2が適用されます。以下の例を参照してください。
apiVersion: flowcontrol.apiserver.k8s.io/v1 kind: PriorityLevelConfiguration metadata: name: kueue-visibility annotations: kueue.openshift.io/allow-nominal-concurrency-shares-update: "false" spec: limited: borrowingLimitPercent: 0 lendablePercent: 90 limitResponse: queuing: handSize: 4 queueLengthLimit: 50 queues: 16 type: Queue nominalConcurrencyShares: 2 type: Limitedkueue.openshift.io/allow-nominal-concurrency-shares-updateのデフォルト値はfalseです。nominalConcurrencySharesの値を2以外の値に変更する場合は、まずkueue.openshift.io/allow-nominal-concurrency-shares-updateの値をtrueに変更する必要があります。そうしないと、nominalConcurrencySharesに割り当てた値は有効になりません。以下のコマンドを実行して、値が保持されていることを確認してください。
$ oc get prioritylevelconfiguration kueue-visibility
2.11. コホートの使用 リンクのコピーリンクがクリップボードにコピーされました!
コホートを使用すると、クラスターキューをグループ化し、どのクラスターキューがリソースを相互に共有できるかを定義できます。共有可能リソースとは、コホート内のすべてのクラスターキューに割り当てられた未使用の公称クォータとして定義されます。
コホートを使用すると、リソース不足を防ぎ、フェアシェアリングの設定を有効にすることで、リソースの使用率を最適化できます。コホートを使用すると、関連するワークロードまたは各チームのクラスターキューをグループ化できるため、チーム間のリソース管理と割り当てを簡素化することもできます。また、コホートを使用してグループレベルでリソースクォータを設定し、クラスターキューのグループが消費できるリソースの制限を定義することもできます。
2.11.1. クラスターキュー仕様内でのコホートの設定 リンクのコピーリンクがクリップボードにコピーされました!
次の例に示すように、ClusterQueue オブジェクトの .spec.cohortName フィールドにコホート名を指定することで、クラスターキューをコホートに追加できます。
apiVersion: kueue.x-k8s.io/v1beta2
kind: ClusterQueue
metadata:
name: cluster-queue
spec:
# ...
cohortName: example-cohort
# ...
spec.cohortName が一致するすべてのクラスターキューは、同じコホートに属します。
spec.cohortName フィールドが省略されている場合、クラスターキューはどのコホートにも属さず、借用可能なリソースにアクセスできません。
2.12. フェアシェアリングの設定 リンクのコピーリンクがクリップボードにコピーされました!
フェアシェアリングは、コホートのテナント間で、借用可能なリソースを均等に、または重み付けされた割合で共有するのに使用されるプリエンプションストラテジーです。借用可能なリソースは、コホート内のすべてのクラスターキューの未使用の名目上のクォータです。
Kueue カスタムリソース (CR) の preemptionPolicy 値を FairSharing に設定することで、フェアシェアリングを設定できます。
2.13. ギャングスケジューリング リンクのコピーリンクがクリップボードにコピーされました!
ギャングスケジューリングにより、必要なリソースがすべて利用可能になった場合にのみ、関連するジョブのグループまたは ギャング が開始されます。Red Hat build of Kueue は、ギャング内の関連ジョブすべてをまとめて開始および実行する容量を OpenShift Container Platform クラスターが保証できるようになるまで、ジョブを一時停止することで、ギャングスケジューリングを可能にします。これは、オールオアナッシング (all-or-nothing) スケジューリングとも呼ばれます。
GPU などの高価で限られたリソースを使用する場合、ギャングスケジューリングは重要です。ギャングスケジューリングにより、ジョブが GPU を要求するものの使用しないという状況を防ぐことができ、GPU の使用率が向上し、実行コストを削減できます。ギャングスケジューリングは、リソースのセグメンテーションやデッドロックなどの問題を防ぐ場合にも役立ちます。
2.13.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
byWorkload:
admission: Parallel
# ...
- 1
policy値を設定して、ギャングスケジューリングを有効または無効化できます。可能な値はByWorkload、None、または空 ("") です。ByWorkload-
policy値がByWorkloadに設定されている場合、各ジョブは単一のユニットとして処理され、許可の対象となります。指定された時間内にジョブの準備が完了しない場合は、ジョブ全体が退避され、後で再試行されます。 None-
policy値がNoneに設定されている場合、ギャングスケジューリングは無効になります。 - 空白 (
"") -
policy値が空、または""に設定されている場合、Red Hat build of Kueue Operator がギャングスケジューリングの設定を決定します。現在、ギャングスケジューリングはデフォルトで無効になっています。
- 2
policy値がByWorkloadに設定されている場合、ジョブの許可設定を行う必要があります。admissionspec に指定できる値は、Parallel、Sequential、または空 ("") です。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.14. クォータ制限付きジョブの実行 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Kueue を有効にして Kubernetes ジョブを実行すると、定義したクォータ制限内でリソースの割り当てを管理できます。これにより、予測可能なリソースの可用性、クラスターの安定性、およびパフォーマンスの最適化に役立ちます。
2.14.1. 利用可能なローカルキューの特定 リンクのコピーリンクがクリップボードにコピーされました!
ジョブをキューに送信する前に、ローカルキューの名前を見つける必要があります。
前提条件
- クラスター管理者によって OpenShift Container Platform クラスターに Red Hat build of Kueue がインストールおよび設定されている。
-
クラスター管理者によって
kueue-batch-user-roleクラスターロールが割り当てられている。 -
OpenShift CLI (
oc) がインストールされている。
手順
次のコマンドを実行し、namespace 内で使用可能なローカルキューをリスト表示します。
$ oc -n <namespace> get localqueues出力例
NAME CLUSTERQUEUE PENDING WORKLOADS user-queue cluster-queue 3
2.14.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) がインストールされている。 - ジョブを送信するローカルキューの名前を特定した。
手順
Jobオブジェクトを作成します。ジョブの例
apiVersion: batch/v1 kind: Job1 metadata: generateName: sample-job-2 namespace: my-namespace labels: kueue.x-k8s.io/queue-name: user-queue3 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次のコマンドを実行してジョブを実行します。
$ oc create -f <filename>.yaml
検証
次のコマンドを実行して出力を確認し、作成したジョブに対して Pod が実行されていることをチェックします。
$ oc get job <job-name>出力例
NAME STATUS COMPLETIONS DURATION AGE sample-job-sk42x Suspended 0/1 2m12s次のコマンドを実行して出力を確認し、ワークロードがジョブの namespace で作成されたことをチェックします。
$ oc -n <namespace> get workloads出力例
NAME QUEUE RESERVED IN ADMITTED FINISHED AGE job-sample-job-sk42x-77c03 user-queue 3m8s
2.15. サポートの利用 リンクのコピーリンクがクリップボードにコピーされました!
このドキュメントで説明されている手順、または Red Hat build of Kueue 全般に問題がある場合は、Red Hat カスタマーポータル にアクセスしてください。
カスタマーポータルでは、以下を行うことができます。
- Red Hat 製品に関するアーティクルおよびソリューションを対象とした Red Hat ナレッジベースの検索またはブラウズ。
- Red Hat サポートに対するサポートケースの送信。
- その他の製品ドキュメントへのアクセス。
2.15.1. Red Hat ナレッジベースについて リンクのコピーリンクがクリップボードにコピーされました!
Red Hat ナレッジベース は、お客様が Red Hat の製品やテクノロジーを最大限に活用できるようにするための豊富なコンテンツを提供します。Red Hat ナレッジベースは、Red Hat 製品のインストール、設定、および使用に関する記事、製品ドキュメント、および動画で構成されています。さらに、既知の問題に対する解決策を検索でき、それぞれに根本原因の簡潔な説明と修復手順が記載されています。
2.15.2. Red Hat サポート用のデータ収集 リンクのコピーリンクがクリップボードにコピーされました!
oc adm must-gather CLI コマンドを使用すると、次のような問題のデバッグに必要になる可能性が高い、Red Hat build of Kueue インスタンスに関する情報を収集できます。
- ワークロード、クラスターキュー、ローカルキュー、リソースフレーバー、アドミッションチェック、および対応するクラスターリソース定義 (CRD) などの Red Hat build of Kueue カスタムリソース
- サービス
- Endpoints
- Webhook の設定
-
openshift-kueue-operatornamespace およびkueue-controller-managerPod からのログ
収集されたデータは、デフォルトでは現在の作業ディレクトリー内の must-gather/ という名前の新しいディレクトリーに書き込まれます。
前提条件
- Red Hat build of Kueue Operator がクラスターにインストールされている。
-
OpenShift CLI (
oc) がインストールされている。
手順
-
must-gatherデータを保存するディレクトリーに移動します。 次のコマンドを実行して、
must-gatherデータを収集します。$ oc adm must-gather \ --image=registry.redhat.io/kueue/kueue-must-gather-rhel9:<version><version>は、Red Hat build of Kueue の現在のバージョンです。-
作業ディレクトリーに作成された
must-gatherディレクトリーから圧縮ファイルを作成します。固有のmust-gatherデータの日付とクラスター ID を必ず提供してください。クラスター ID を確認する方法の詳細は、How to find the cluster-id or name on OpenShift cluster を参照してください。 - Red Hat カスタマーポータルの カスタマーサポート ページ で、圧縮ファイルをサポートケースに添付します。
第3章 Leader Worker Set Operator リンクのコピーリンクがクリップボードにコピーされました!
3.1. Leader Worker Set Operator の概要 リンクのコピーリンクがクリップボードにコピーされました!
Leader Worker Set Operator を使用して、マルチノード AI/ML 推論デプロイメントを効率的に管理します。Leader Worker Set Operator は、Pod のグループを 1 つのユニットとして扱い、大規模なワークロードのスケーリング、リカバリー、更新を単純化します。
AI/ML 推論に大規模言語モデル (LLM) を使用するには、多くの場合、大量のコンピュートリソースが必要です。通常はワークロードを複数のノードに分散する必要があります。そのため、デプロイメントが複雑になり、スケーリング、障害からの回復、効率的な Pod の配置に関する課題が生じる可能性があります。
Leader Worker Set Operator は、Pod のグループを 1 つの連携したユニットとして扱うことで、このようなマルチノードのデプロイメントを簡素化します。また、グループ内の各 Pod のライフサイクルを管理し、グループ全体をまとめてスケーリングし、グループレベルで更新と障害回復を実行して、一貫性を確保します。
3.1.1. Leader Worker Set Operator について リンクのコピーリンクがクリップボードにコピーされました!
Leader Worker Set Operator を使用して、Pod のグループを単一の管理可能なユニットとしてデプロイします。これは、シャーディングされた大規模言語モデル (LLM) などの大規模な AI/ML 推論ワークロードをデプロイする場合に役立ちます。
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 アーキテクチャーを確認し、LeaderWorkerSet API が、分散ワークロードを連携させるために、1 つの Pod をリーダー、残りの Pod をワーカーとして、Pod のグループを 1 つのユニットに編成する方法を理解します。
次の図は、LeaderWorkerSet アーキテクチャーを示しています。
図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 の開発履歴を記録したものです。
詳細は、Leader Worker Set Operator について を参照してください。
3.2.1. Leader Worker Set Operator 1.0.0 のリリースノート リンクのコピーリンクがクリップボードにコピーされました!
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 のインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform Web コンソールから Leader Worker Set Operator をインストールして、分散 AI ワークロードの管理を開始できます。
前提条件
-
cluster-admin権限でクラスターにアクセスできる。 - OpenShift Container Platform Web コンソールにアクセスできる。
- cert-manager Operator for Red Hat OpenShift がインストールされている。
手順
- OpenShift Container Platform Web コンソールにログインします。
- cert-manager Operator for Red Hat OpenShift がインストールされていることを確認します。
Leader Worker Set Operator をインストールします。
- Ecosystem → Software Catalog に移動します。
- フィルターボックスに Leader Worker Set Operator と入力します。
- Leader Worker Set Operator を選択し、Install をクリックします。
Install Operator ページで以下を行います。
- Update channel を stable-v1.0 に設定します。これにより、Leader Worker Set Operator 1.0 の最新の安定版リリースがインストールされます。
- Installation mode で、A specific namespace on the cluster を選択します。
- Installed Namespace の下で、Operator recommended Namespace: openshift-lws-operator を選択します。
Update approval で、次のいずれかの更新ストラテジーを選択します。
- Automatic ストラテジーを使用すると、新しいバージョンが利用可能になったときに、Operator Lifecycle Manager (OLM) によって Operator を自動的に更新できます。
- Manual ストラテジーには、Operator の更新を承認するための適切な認証情報を持つユーザーが必要です。
- Install をクリックします。
Leader Worker Set Operator のカスタムリソース (CR) を作成します。
- Installed Operators → Leader Worker Set Operator に移動します。
- Provided APIs の下にある LeaderWorkerSetOperator ペインで Create instance をクリックします。
- Create をクリックします。
3.3.2. リーダーワーカーセットのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
Leader Worker Set Operator を使用すると、リーダーワーカーセットをデプロイして、複数のノード間で分散されるワークロードの管理を支援できます。
前提条件
- Leader Worker Set Operator をインストールした。
手順
次のコマンドを実行して新しいプロジェクトを作成します。
$ oc new-project my-namespaceleader-worker-set.yamlという名前のファイルを作成します。apiVersion: leaderworkerset.x-k8s.io/v1 kind: LeaderWorkerSet metadata: generation: 1 name: my-lws namespace: my-namespace spec: leaderWorkerTemplate: leaderTemplate: metadata: {} spec: containers: - image: nginxinc/nginx-unprivileged:1.27 name: leader resources: {} restartPolicy: RecreateGroupOnPodRestart size: 3 workerTemplate: metadata: {} spec: containers: - image: nginxinc/nginx-unprivileged:1.27 name: worker ports: - containerPort: 8080 protocol: TCP resources: {} networkConfig: subdomainPolicy: Shared replicas: 2 rolloutStrategy: rollingUpdateConfiguration: maxSurge: 1 maxUnavailable: 1 type: RollingUpdate startupPolicy: LeaderCreated各項目の説明:
metadata.name- リーダーワーカーセットのリソースの名前を指定します。
metadata.namespace- リーダーワーカーセットが実行される namespace を指定します。
spec.leaderWorkerTemplate.leaderTemplate- リーダー Pod の Pod テンプレートを指定します。
spec.leaderWorkerTemplate.restartPolicy-
Pod 障害が発生した場合の再起動ポリシーを指定します。使用できる値は、グループ全体を再起動する
RecreateGroupOnPodRestartか、グループを再起動しないNoneです。 spec.leaderWorkerTemplate.size-
リーダー Pod を含む、各グループに作成する Pod の数を指定します。たとえば、値が
3の場合、リーダー Pod 1 個とワーカー Pod 2 個が作成されます。デフォルト値は1です。 spec.leaderWorkerTemplate.workerTemplate- ワーカー Pod の Pod テンプレートを指定します。
spec.networkConfig.subdomainPolicy-
ヘッドレスサービスを作成するときに使用するポリシーを指定します。使用できる値は
UniquePerReplicaまたはSharedです。デフォルト値はSharedです。 spec.replicas-
レプリカの数、つまりリーダーワーカーグループの数を指定します。デフォルト値は
1です。 spec.rolloutStrategy.rollingUpdateConfiguration.maxSurge-
ローリング更新中に
replicas値を超えてスケジュールできるレプリカの最大数を指定します。値は整数またはパーセンテージで指定できます。
設定可能なすべてのフィールドの詳細は、LeaderWorkerSet API のアップストリームドキュメントを参照してください。
次のコマンドを実行して、リーダーワーカーセットの設定を適用します。
$ oc apply -f leader-worker-set.yaml
検証
次のコマンドを実行して、Pod が作成されたことを確認します。
$ oc get pods -n my-namespace出力例
NAME READY STATUS RESTARTS AGE my-lws-0 1/1 Running 0 4s 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 my-lws-1-1 1/1 Running 0 6s my-lws-1-2 1/1 Running 0 6s-
my-lws-0は、最初のグループのリーダー Pod です。 -
my-lws-1は、2 番目のグループのリーダー Pod です。
-
次のコマンドを実行して、ステートフルセットを確認します。
$ oc get statefulsets出力例
NAME READY AGE my-lws 4/4 111s my-lws-0 2/2 57s my-lws-1 2/2 60s-
my-lwsは、すべてのリーダーワーカーグループのリーダーステートフルセットです。 -
my-lws-0は、最初のグループのワーカーステートフルセットです。 -
my-lws-1は、2 番目のグループのワーカーステートフルセットです。
-
3.4. Leader Worker Set Operator のアンインストール リンクのコピーリンクがクリップボードにコピーされました!
クラスターで Leader Worker Set Operator が不要になった場合は、Operator をアンインストールして関連リソースを削除できます。
3.4.1. Leader Worker Set Operator のアンインストール リンクのコピーリンクがクリップボードにコピーされました!
クラスターで Operator が不要になった場合は、Web コンソールを使用して Leader Worker Set Operator をアンインストールできます。
前提条件
-
cluster-admin権限でクラスターにアクセスできる。 - OpenShift Container Platform Web コンソールにアクセスできる。
- Leader Worker Set Operator をインストールした。
手順
- OpenShift Container Platform Web コンソールにログインします。
- Operators → Installed Operators に移動します。
-
Project ドロップダウンリストから
openshift-lws-operatorを選択します。 LeaderWorkerSetOperatorインスタンスを削除します。- Leader Worker Set Operator をクリックし、LeaderWorkerSetOperator タブを選択します。
-
クラスター エントリーの横にあるオプションメニュー
をクリックし、[LeaderWorkerSetOperator を削除] を選択します。
- 確認ダイアログで Delete をクリックします。
Leader Worker Set Operator をアンインストールします。
- Operators → Installed Operators に移動します。
-
Leader Worker Set Operator エントリーの横にあるオプションメニュー
をクリックし、Operator のアンインストールを クリックします。
- 確認ダイアログで、Uninstall をクリックします。
3.4.2. Leader Worker Set Operator リソースのアンインストール リンクのコピーリンクがクリップボードにコピーされました!
必要に応じて、Leader Worker Set Operator をアンインストールした後、カスタムリソース (CR) と関連する namespace を削除します。これにより、残っているすべての Leader Worker Set アーティファクトがクリーンアップされます。
前提条件
-
cluster-admin権限でクラスターにアクセスできる。 - OpenShift Container Platform Web コンソールにアクセスできる。
- Leader Worker Set Operator をアンインストールした。
手順
- OpenShift Container Platform Web コンソールにログインします。
Leader Worker Set Operator をインストールしたときに作成された CRD を削除します。
- Administration → CustomResourceDefinitions に移動します。
-
Name フィールドに
LeaderWorkerSetOperatorと入力し、CRD をフィルタリングします。 -
LeaderWorkerSetOperator CRD の横にあるオプションメニュー
をクリックし、[カスタムリソース定義の削除] を選択します。
- 確認ダイアログで Delete をクリックします。
openshift-lws-operatornamespace を削除します。- Administration → Namespaces に移動します。
-
フィルターボックスに
openshift-lws-operatorと入力します。 -
openshift-lws-operator エントリーの横にあるオプションメニュー
をクリックし、[名前空間の削除] を選択します。
-
確認ダイアログで、
openshift-lws-operatorと入力し、Delete をクリックします。
第4章 JobSet Operator リンクのコピーリンクがクリップボードにコピーされました!
4.1. JobSet Operator の概要 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform の JobSet Operator を使用すると、高性能コンピューティング (HPC) や AI トレーニングなどの大規模で協調的なワークロードを管理および実行できます。マルチテンプレートジョブのサポートや安定したネットワーク接続といった機能は、迅速な復旧とリソースの効率的な利用に役立ちます。
4.1.1. JobSet Operator について リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform の JobSet Operator を使用すると、高性能コンピューティング (HPC) や人工知能 (AI) トレーニングなどの大規模で分散および調整されたコンピューティングワークロードを管理して、自動的な安定、調整、障害復旧を実現できます。
JobSet Operator は、JobSet オープンソースプロジェクトをベースにしています。
JobSet Operator は、ジョブのグループを単一の調整されたユニットとして管理するように設計されています。これは、一連のマシンをチームとして数時間または数日間実行する必要のある、HPC や大規模 AI モデルのトレーニングなどの分野で特に役立ちます。
JobSet Operator を使用すると、標準的な OpenShift Container Platform ジョブにおいては大きすぎる、または複雑すぎる問題を解決できます。JobSet Operator は調整、安定性、および回復を行います。
JobSet Operator は、IP アドレスを取得するための安定したヘッドレスサービスを自動的にセットアップします。これにより、障害が発生して再起動した後でも、ワーカーは互いを見つけて通信できます。また、自動障害復旧機能も提供します。大規模なトレーニングジョブのごく一部が失敗した場合、保存されたチェックポイントからワーカーグループ全体を再起動するように Operator を設定できます。これにより、時間と計算コストが節約されます。
JobSet Operator は起動制御を提供し、これにより依存関係を確実に満たすために特定の起動シーケンスを定義できます。たとえば、ワーカーが接続を試みる前にリーダーが実行されるようにします。
JobSet Operator を使用すると、OpenShift Container Platform 上での大規模で分散および調整されたコンピューティングタスクの管理が容易になり、多数の個別コンポーネントが 1 つの回復力のある管理しやすいシステムになります。
4.2. JobSet Operator のリリースノート リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform 上で調整された大規模なコンピューティングワークロードを管理する JobSet Operator の開発、機能、修正を追跡します。
詳細は、JobSet Operator について を参照してください。
4.2.1. JobSet Operator 1.0 のリリースノート リンクのコピーリンクがクリップボードにコピーされました!
JobSet Operator 1.0 の初回リリースにおける新機能とアドバイザリーを確認してください。
発行日:2026 年 2 月 12 日
JobSet Operator 1.0 に関する以下のアドバイザリーが利用可能です。
4.2.1.1. 新機能および機能拡張 リンクのコピーリンクがクリップボードにコピーされました!
- これは、JobSet Operator の一般提供開始版です。
4.3. JobSet Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform に JobSet Operator をインストールすると、大規模で調整されたコンピューティングワークロードの管理が可能になり、アプリケーションで統一された API および障害回復機能を使用できます。
4.3.1. JobSet Operator のインストール リンクのコピーリンクがクリップボードにコピーされました!
Web コンソールを使用して OpenShift Container Platform に JobSet Operator をインストールし、大規模で調整されたコンピューティングワークロードの管理を開始します。
前提条件
-
cluster-admin権限でクラスターにアクセスできる。 - OpenShift Container Platform Web コンソールにアクセスできる。
- cert-manager Operator for Red Hat OpenShift がインストールされている。
手順
- OpenShift Container Platform Web コンソールにログインします。
- cert-manager Operator for Red Hat OpenShift がインストールされていることを確認します。
JobSet Operator をインストールします。
- Ecosystem → Software Catalog に移動します。
-
openshift-operatorsプロジェクトを検索して選択します。 - フィルターボックスに JobSet Operator と入力します。
- JobSet Operator を選択し、Install をクリックします。
Install Operator ページで以下を行います。
- 更新チャネル は stable-v1.0 に設定されており、JobSet Operator の最新の安定版リリースがインストールされます。
- Installation mode で、A specific namespace on the cluster を選択します。
- Installed Namespace の下で、Operator recommended Namespace: openshift-jobset-operator を選択します。
Update approval で、次のいずれかの更新ストラテジーを選択します。
- Automatic ストラテジーを使用すると、新しいバージョンが利用可能になったときに、Operator Lifecycle Manager (OLM) によって Operator を自動的に更新できます。
- Manual ストラテジーには、Operator の更新を承認するための適切な認証情報を持つユーザーが必要です。
- Install をクリックします。
JobSet Operator のカスタムリソース (CR) を作成します。
- Installed Operators → JobSet Operator に移動します。
- Provided APIs の下にある JobSetOperator ペインで Create instance をクリックします。
- 名前を cluster に設定します。
- managementState を Managed に設定します。
- Create をクリックします。
検証
次のコマンドを入力して、JobSet Operator とオペランド Pod が実行されていることを確認します。
$ oc get pod -n openshift-jobset-operator出力例
NAME READY STATUS RESTARTS AGE jobset-controller-manager-5595547fb-b4g2x 1/1 Running 0 48s jobset-operator-596cb848c6-q2dmp 1/1 Running 0 2m33s
4.4. JobSet Operator を使用したワークロードの管理 リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform の JobSet Operator を使用すると、高性能コンピューティング (HPC) や AI トレーニングなどの大規模で協調的なワークロードを管理および実行できます。マルチテンプレートジョブのサポートや安定したネットワーク接続といった機能は、迅速な復旧とリソースの効率的な利用に役立ちます。
4.4.1. ジョブセットのデプロイ リンクのコピーリンクがクリップボードにコピーされました!
JobSet Operator を使用すると、JobSet をデプロイして、大規模で協調的なワークロードを管理および実行できます。
前提条件
- JobSet Operator をインストールしました。
- NVIDIA 製 GPU を搭載したクラスターが利用可能です。
手順
次のコマンドを実行して新しいプロジェクトを作成します。
$ oc new-project <my_namespace>jobset.yamlという名前のファイルを作成します。apiVersion: jobset.x-k8s.io/v1alpha2 kind: JobSet metadata: name: pytorch spec: replicatedJobs: - name: workers template: spec: parallelism: <pods_running_number> completions: <pods_finish_number> backoffLimit: 0 template: spec: imagePullSecrets: - name: my-registry-secret initContainers: - name: prepare image: docker.io/alpine/git:v2.52.0 args: ['clone', 'https://github.com/pytorch/examples'] volumeMounts: - name: workdir mountPath: /git containers: - name: pytorch image: docker.io/pytorch/pytorch:2.10.0-cuda13.0-cudnn9-runtime resources: limits: nvidia.com/gpu: "1" requests: nvidia.com/gpu: "1" ports: - containerPort: 4321 env: - name: MASTER_ADDR value: "pytorch-workers-0-0.pytorch" - name: MASTER_PORT value: "4321" - name: RANK valueFrom: fieldRef: fieldPath: metadata.annotations['batch.kubernetes.io/job-completion-index'] - name: PYTHONUNBUFFERED value: "0" command: - /bin/sh - -c - | cd examples/distributed/ddp-tutorial-series torchrun --nproc_per_node=1 --nnodes=3 --rdzv_id=100 --rdzv_backend=c10d --rdzv_endpoint=$MASTER_ADDR:$MASTER_PORT multinode.py 1000 100 volumeMounts: - name: workdir mountPath: /workspace volumes: - name: workdir emptyDir: {}各項目の説明:
<pods_running_number>- 同時に実行される Pod の数を指定します。
<pods_finish_number>- ジョブが完了したとみなされるために、正常に完了する必要のある Pod の総数を指定します。
以下のコマンドを実行して、JobSet の設定を適用してください。
$ oc apply -f jobset.yaml
検証
以下のコマンドを実行して、Pod が起動したことを確認してください。
$ oc get pods -n <my_namespace>出力例
NAME READY STATUS RESTARTS AGE pytorch-workers-0-0-2lzwt 1/1 Running 0 2m17s pytorch-workers-0-1-g2lrv 1/1 Running 0 2m17s pytorch-workers-0-2-dpljq 1/1 Running 0 2m17s
4.4.2. ジョブセットコーディネーターの指定 リンクのコピーリンクがクリップボードにコピーされました!
JobSetPod 間の通信を管理するには、特定の JobSet コーディネーター Pod を割り当てることができます。これにより、分散ワークロードは、タスクの同期とデータ交換のための中心的な調整ポイントとして、安定したネットワークエンドポイントを参照できるようになります。
前提条件
- JobSet Operator をインストールしました。
手順
以下のコマンドを実行して、新しい名前空間を作成します。
$ oc new-project <new_namespace>jobset-coordinator.yamlという名前の YAML ファイルを作成します。サンプル YAML ファイル
apiVersion: jobset.x-k8s.io/v1alpha2 kind: JobSet metadata: name: coordinator spec: coordinator: replicatedJob: driver jobIndex: 0 podIndex: 0 replicatedJobs: - name: workers template: spec: parallelism: <pods_running_number> completions: <pods_finish_number> backoffLimit: 0 template: spec: containers: - name: worker env: - name: COORDINATOR_ENDPOINT valueFrom: fieldRef: fieldPath: metadata.labels['jobset.sigs.k8s.io/coordinator'] image: quay.io/nginx/nginx-unprivileged:1.29-alpine command: [ "/bin/sh", "-c" ] args: - | while ! curl -s "${COORDINATOR_ENDPOINT}:8080" | grep Welcome; do sleep 3 done sleep 100 - name: driver template: spec: parallelism: <pods_running_number> completions: <pods_finish_number> backoffLimit: 0 template: spec: containers: - name: driver image: quay.io/nginx/nginx-unprivileged:1.29-alpine ports: - containerPort: 8080 protocol: TCP各項目の説明:
<pods_running_number>- 同時に実行される Pod の数を指定します。
<pods_finish_number>- ジョブが完了したとみなされるために、正常に完了する必要のある Pod の総数を指定します。
以下のコマンドを実行して、
jobset-coordinator.yamlファイルを適用します。$ oc apply -f jobset-coordinator.yaml
検証
次のコマンドを実行して、Pod が作成されたことを確認します。
$ oc get pods -n <new_namespace>出力例
NAME READY STATUS RESTARTS AGE coordinator-driver-0-0-svgk7 1/1 Running 0 67s coordinator-workers-0-0-57jvg 1/1 Running 0 67s coordinator-workers-0-1-mghvx 1/1 Running 0 67s coordinator-workers-0-2-7cnvv 1/1 Running 0 67s
4.4.3. JobSet Operator の障害ポリシー設定 リンクのコピーリンクがクリップボードにコピーされました!
子ジョブの失敗に対するワークロードの動作を制御するには、ジョブセットの失敗ポリシーを設定できます。これにより、障害の原因や影響を受ける特定のレプリケートジョブに基づいて、ジョブセット全体を再起動または失敗させるなど、特定のアクションを定義できます。
4.4.3.1. 不履行時のポリシー措置 リンクのコピーリンクがクリップボードにコピーされました!
これらのアクションは、ジョブの失敗が定義されたルールに一致した場合に利用できます。
| アクション | 説明 |
|---|---|
|
| ジョブセット全体を即座に失敗としてマークします。 |
|
|
すべての子ジョブを再作成することで、ジョブセットを再起動します。この操作は、 |
|
|
|
4.4.3.2. ルールターゲティング属性 リンクのコピーリンクがクリップボードにコピーされました!
以下の属性を使用して、障害ルールを定義します。
| 属性 | 説明 |
|---|---|
|
| どのレプリケートされたジョブがこのルールをトリガーするかを指定します。 |
|
|
特定のジョブ失敗理由に基づいてルールをトリガーします。有効な値には、 |
4.4.3.3. 設定例 リンクのコピーリンクがクリップボードにコピーされました!
この設定では、リーダー ジョブが失敗した場合にジョブセット全体が失敗とみなされます。
リーダーが失敗した場合にジョブセットを失敗とマークするための YAML ファイルの例
apiVersion: jobset.x-k8s.io/v1alpha2
kind: JobSet
metadata:
name: failjobset-action-example
spec:
failurePolicy:
maxRestarts: 3
rules:
- action: FailJobSet
targetReplicatedJobs:
- leader
replicatedJobs:
- name: leader
replicas: 1
template:
spec:
backoffLimit: 0
completions: 2
parallelism: 2
template:
spec:
containers:
- name: leader
image: docker.io/bash:latest
command:
- bash
- -xc
- |
echo "JOB_COMPLETION_INDEX=$JOB_COMPLETION_INDEX"
if [[ "$JOB_COMPLETION_INDEX" == "0" ]]; then
for i in $(seq 10 -1 1)
do
echo "Sleeping in $i"
sleep 1
done
exit 1
fi
for i in $(seq 1 1000)
do
echo "$i"
sleep 1
done
- name: workers
replicas: 1
template:
spec:
backoffLimit: 0
completions: 2
parallelism: 2
template:
spec:
containers:
- name: worker
image: docker.io/bash:latest
command:
- bash
- -xc
- |
sleep 1000
4.4.4. JobSet Operator のボリュームクレームポリシーの設定 リンクのコピーリンクがクリップボードにコピーされました!
JobSet を設定することで、複数のレプリケートされたジョブ間で共有される永続ボリューム要求 (PVC) を自動的に作成および管理できます。これは、データセット、モデル、またはチェックポイントへの共有アクセスを必要とするワークロードに役立ちます。
前提条件
- クラスターに JobSet Operator がインストールされています。
- ワークロードに対して、デフォルトのストレージクラスを設定したか、ストレージクラスを選択しました。
手順
JobSet YAML ファイルの
spec.volumeClaimPoliciesセクションでボリュームテンプレートを定義します。apiVersion: jobset.x-k8s.io/v1alpha2 kind: JobSet metadata: name: <job_name> spec: volumeClaimPolicies: - templates: - metadata: name: <persistent_volume_claim_name_prefix> spec: accessModes: ["ReadWriteOnce"] storageClassName: mystorageclass resources: requests: storage: 1Gi retentionPolicy: whenDeleted: Retain各項目の説明:
< ジョブ名 >- 名前空間内のジョブを識別するための固有の識別子を指定します。
<persistent_volume_claim_name>-
PVC の名前を指定します。ここで使用した名前は、
volumeMounts の名前としても使用されます。<persistent_volume_claim_name>-<job_name>の形式で作成された PVC をマウントするボリュームが、Pod に自動的に追加されます。 < 削除保持ポリシー >-
削除保持ポリシーを指定します。オプションとして、この値を
保持に設定することで、ジョブセットが削除された後もデータを保持できます。
replicatedJobs の設定で、定義したテンプレート名に一致するvolumeMountを追加してください。apiVersion: jobset.x-k8s.io/v1alpha2 kind: JobSet metadata: name: <job_name> spec: replicatedJobs: - name: workers template: spec: parallelism: 2 completions: 2 backoffLimit: 0 template: spec: imagePullSecrets: - name: my-registry-secret initContainers: - name: prepare image: docker.io/alpine/git:v2.52.0 args: ['clone', 'https://github.com/pytorch/examples'] volumeMounts: - name: <persistent_volume_claim_name> mountPath: /git/checkpoint #...以下のコマンドを実行して、JobSet の設定を適用してください。
$ oc apply -f <jobset_yaml>
検証
PVC が
<claim_name>-<jobset_name> という命名規則を使用して作成されたことを確認してください。$ oc get pvc出力例
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE pvc-1 Bound pvc-385996a0-70af-4791-aa8e-9e6459e6b123 3Gi RWO file-storage 3d pvc-2 Bound pvc-8aeddd4d-aad5-4039-8d04-640a71c9a72d 12Gi RWO file-storage 3d pvc-3 Bound pvc-0050144d-940c-4c4e-a23a-2a660a5490eb 12Gi RWO file-storage 3d
4.5. JobSet Operator のアンインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform の Web コンソールを使用して、クラスターから Operator インスタンスとそのリソースを削除し、JobSetOperator をアンインストールします。
4.5.1. JobSet Operator のアンインストール リンクのコピーリンクがクリップボードにコピーされました!
OpenShift Container Platform の Web コンソールを使用して Operator インスタンスを削除することにより、JobSet Operator をアンインストールします。
前提条件
-
cluster-admin権限でクラスターにアクセスできる。 - OpenShift Container Platform Web コンソールにアクセスできる。
- JobSet Operator をインストールしました。
手順
- OpenShift Container Platform Web コンソールにログインします。
- Operators → Installed Operators に移動します。
-
プロジェクト ドロップダウンリストから
openshift-js-operatorを選択してください。 JobSetOperatorインスタンスを削除します。- JobSet Operator をクリックし、JobSetOperator タブを選択します。
-
クラスター エントリーの横にあるオプションメニュー
をクリックし、[JobSetOperator の削除] を選択します。
- 確認ダイアログで Delete をクリックします。
JobSet Operator をアンインストールしてください。
- Operators → Installed Operators に移動します。
-
JobSet Operator エントリーの横にあるオプションメニュー
をクリックし、Operator のアンインストールを クリックします。
- 確認ダイアログで、Uninstall をクリックします。
4.5.2. JobSet Operator リソースをアンインストールしています リンクのコピーリンクがクリップボードにコピーされました!
必要に応じて、JobSet Operator をアンインストールした後、クラスターから関連リソースを削除できます。
前提条件
-
cluster-admin権限でクラスターにアクセスできる。 - OpenShift Container Platform Web コンソールにアクセスできる。
- JobSet Operator をアンインストールしました。
手順
- OpenShift Container Platform Web コンソールにログインします。
JobSet Operator のインストール時に作成された CRD を削除します。
- Administration → CustomResourceDefinitions に移動します。
-
CRD をフィルタリングするには、名前 フィールドに
JobSetOperatorと入力してください。 -
JobSetOperator CRD の横にあるオプションメニュー
をクリックし、[カスタムリソース定義の削除] を選択します。
- 確認ダイアログで Delete をクリックします。
openshift-jobset-operator名前空間を削除します。- Administration → Namespaces に移動します。
-
名前空間のリストに
openshift-jobset-operator が適切に含まれています。 -
openshift-jobset-operator エントリーの横にあるオプションメニュー
をクリックし、[名前空間の削除] を選択します。
-
確認ダイアログで
openshift-jobset-operatorと入力し、削除 をクリックします。