5.4.2. CSI ボリュームクローンのプロビジョニング

CSI ボリュームクローンのプロビジョニングは、クローン作成された永続ボリューム要求 (PVC) API オブジェクトの作成によってトリガーされます。クローンは、他の永続ボリュームと同じルールに従って、別の PVC の内容を事前に設定します。例外として、同じ namespace の既存 PVC を参照する dataSource を追加する必要があります。

前提条件

  • 実行中の OpenShift Container Platform クラスターにログインしている。
  • PVC がボリュームのクローン作成をサポートする CSI ドライバーを使用して作成されている。
  • ストレージバックエンドが動的プロビジョニング用に設定されている。静的プロビジョナーのクローン作成のサポートは利用できません。

手順

既存の PVC から PVC のクローンを作成するには、以下を実行します。

  1. 以下の YAML によって記述される PersistentVolumeClaim オブジェクトを使ってファイルを作成し、保存します。

    pvc-clone.yaml

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-1-clone
      namespace: mynamespace
    spec:
      storageClassName: csi-cloning 1
      accessModes:
        - ReadWriteOnce
      resources:
        requests:
          storage: 5Gi
      dataSource:
        kind: PersistentVolumeClaim
        name: pvc-1

    1
    ストレージのバックエンドをプロビジョニングするストレージクラスの名前。デフォルトのストレージクラスを使用でき、storageClassName は仕様で省略できます。
  2. 以下のコマンドを実行して、直前の手順で保存されたオブジェクトを作成します。

    $ oc create -f pvc-clone.yaml

    新規の PVC pvc-1-clone が作成されます。

  3. 以下のコマンドを実行して、ボリュームのクローンが作成され、準備状態にあることを確認します。

    $ oc get pvc pvc-1-clone

    pvc-1-clone は、これが Bound であることを示します。

    これで、新たにクローン作成された PVC を使用して Pod を設定する準備が整いました。

  4. YAML によって記述される Pod オブジェクトと共にファイルを作成し、保存します。以下に例を示します。

    kind: Pod
    apiVersion: v1
    metadata:
      name: mypod
    spec:
      containers:
        - name: myfrontend
          image: dockerfile/nginx
          volumeMounts:
          - mountPath: "/var/www/html"
            name: mypd
      volumes:
        - name: mypd
          persistentVolumeClaim:
            claimName: pvc-1-clone 1
    1
    CSI ボリュームのクローン作成の操作時に作成されるクローン作成された PVC。

    作成された Pod オブジェクトは、元の dataSource PVC とは別に、クローンされた PVC の使用、クローン、スナップショット、または削除を実行できるようになりました。