6.3.5. ボリュームスナップショットの作成
VolumeSnapshot オブジェクトを作成すると、OpenShift Container Platform はボリュームスナップショットを作成します。
前提条件
- 実行中の OpenShift Container Platform クラスターにログインしている。
-
VolumeSnapshotオブジェクトをサポートする CSI ドライバーを使用して作成される PVC。 - ストレージバックエンドをプロビジョニングするストレージクラス。
スナップショットの作成に使用する必要のある永続ボリューム要求 (PVC) を使用している Pod はありません。
警告Pod によって使用されている PVC のボリュームスナップショットを作成すると、書き込まれていないデータやキャッシュされたデータがスナップショットから除外される可能性があります。すべてのデータがディスクに確実に書き込まれるようにするには、PVC を使用している Pod を削除してから、スナップショットを作成してください。
手順
ボリュームのスナップショットを動的に作成するには、以下を実行します。
以下の YAML によって記述される
VolumeSnapshotClassオブジェクトを使用してファイルを作成します。volumesnapshotclass.yaml
apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: csi-hostpath-snap driver: hostpath.csi.k8s.io1 deletionPolicy: Delete- 1
- この
VolumeSnapshotClassオブジェクトのスナップショットを作成するために使用される CSI ドライバーの名前。名前は、スナップショットが作成される PVC に対応するストレージクラスのProvisionerフィールドと同じである必要があります。注記永続ストレージの設定に使用したドライバーによっては、追加のパラメーターが必要になる場合があります。既存の
VolumeSnapshotClassオブジェクトを使用することもできます。
以下のコマンドを実行して、直前の手順で保存されたオブジェクトを作成します。
$ oc create -f volumesnapshotclass.yamlVolumeSnapshotオブジェクトを作成します。volumesnapshot-dynamic.yaml
apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: mysnap spec: volumeSnapshotClassName: csi-hostpath-snap1 source: persistentVolumeClaimName: myclaim2 以下のコマンドを実行して、直前の手順で保存されたオブジェクトを作成します。
$ oc create -f volumesnapshot-dynamic.yaml
スナップショットを手動でプロビジョニングするには、以下を実行します。
上記のようにボリュームスナップショットクラスを定義するだけでなく、
volumeSnapshotContentNameパラメーターの値をスナップショットのソースとして指定します。volumesnapshot-manual.yaml
apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: snapshot-demo spec: source: volumeSnapshotContentName: mycontent1 - 1
- 事前にプロビジョニングされたスナップショットには、
volumeSnapshotContentNameパラメーターが必要です。
以下のコマンドを実行して、直前の手順で保存されたオブジェクトを作成します。
$ oc create -f volumesnapshot-manual.yaml
検証
スナップショットがクラスターで作成されると、スナップショットに関する追加情報が利用可能になります。
作成したボリュームスナップショットの詳細を表示するには、以下のコマンドを実行します。
$ oc describe volumesnapshot mysnap以下の例は、
mysnapボリュームスナップショットの詳細を表示します。volumesnapshot.yaml
apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: mysnap spec: source: persistentVolumeClaimName: myclaim volumeSnapshotClassName: csi-hostpath-snap status: boundVolumeSnapshotContentName: snapcontent-1af4989e-a365-4286-96f8-d5dcd65d78d61 creationTime: "2020-01-29T12:24:30Z"2 readyToUse: true3 restoreSize: 500Mi- 1
- コントローラーによって作成された実際のストレージコンテンツへのポインター。
- 2
- スナップショットが作成された時間。スナップショットには、このタイミングで利用できるボリュームコンテンツが含まれます。
- 3
- 値が
trueに設定されている場合、スナップショットを使用して新規 PVC として復元できます。
値がfalseに設定されている場合、スナップショットが作成されています。ただし、ストレージバックエンドは、スナップショットを新規ボリュームとして復元できるようにするために、追加のタスクを実行してスナップショットを使用できる状態にする必要があります。たとえば、Amazon Elastic Block Store データを別の低コストの場所に移動する場合があり、これには数分の時間がかかる可能性があります。
ボリュームのスナップショットが作成されたことを確認するには、以下のコマンドを実行します。
$ oc get volumesnapshotcontent実際のコンテンツへのポインターが表示されます。
boundVolumeSnapshotContentNameフィールドにデータが設定される場合、VolumeSnapshotContentオブジェクトが存在し、スナップショットが作成されています。-
スナップショットの準備が完了していることを確認するには、
VolumeSnapshotオブジェクトにreadyToUse: trueがあることを確認します。