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