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 をインストールします。
-
Operators
OperatorHub に移動します。 - フィルターボックスに 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 をクリックします。
-
Operators
Leader Worker Set Operator のカスタムリソース (CR) を作成します。
-
Installed Operators
Leader Worker Set Operator に移動します。 - Provided APIs の下にある LeaderWorkerSetOperator ペインで Create instance をクリックします。
- Create をクリックします。
-
Installed Operators
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-
ローリング更新中にレプリカ値を超えてスケジュールできる
レプリカの最大数を指定します。値は整数またはパーセンテージで指定できます。
設定可能なすべてのフィールドの詳細は、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 番目のグループのワーカーステートフルセットです。
-