Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

27.21.4.2. スナップショットの作成

PV のスナップショットを作成するには、新しい VolumeSnapshot オブジェクトを以下のように作成します。

apiVersion: volumesnapshot.external-storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: snapshot-demo
spec:
  persistentVolumeClaimName: ebs-pvc

persistentVolumeClaimName は、PersistentVolume にバインドされる PersistentVolumeClaim の名前です。この特定 PV のスナップショットが作成されます。

次に、VolumeSnapshot に基づく VolumeSnapshotData オブジェクトが自動的に作成されます。VolumeSnapshotVolumeSnapshotData の関係は PersistentVolumeClaimPersistentVolume の関係に似ています。

PV のタイプによっては、反映される VolumeSnapshot の状態に応じ、操作が複数の段階にわたる場合があります。

  1. 新規 VolumeSnapshot オブジェクトが作成されます。
  2. コントローラーによってスナップショット操作が開始されます。スナップショット対象の PersistentVolume をフリーズし、アプリケーションを一時停止する必要が生じる場合があります。
  3. ストレージシステムによるスナップショットの作成が完了し (スナップショットが切り取られ)、スナップショット対象の PersistentVolume が通常の操作に戻ります。スナップショット自体の準備はまだできていません。ここでの状態は Pending タイプで状態の値は True です。実際のスナップショットを表す VolumeSnapshotData オブジェクトが新たに作成されます。
  4. 新規スナップショットの作成が完成し、使用できる状態になります。ここでの状態は Ready タイプで、状態の値は True です。
重要

データの整合性の確保 (Pod/アプリケーションの停止、キャッシュのフラッシュ、ファイルシステムのフリーズなど) はユーザーの責任で行う必要があります。

注記

エラーの場合は、VolumeSnapshot の状態が Error 状態に追加されます。

VolumeSnapshot の状態を表示するには、以下を実行します。

$ oc get volumesnapshot -o yaml

状態が以下のように表示されます。

apiVersion: volumesnapshot.external-storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  clusterName: ""
  creationTimestamp: 2017-09-19T13:58:28Z
  generation: 0
  labels:
    Timestamp: "1505829508178510973"
  name: snapshot-demo
  namespace: default
  resourceVersion: "780"
  selfLink: /apis/volumesnapshot.external-storage.k8s.io/v1/namespaces/default/volumesnapshots/snapshot-demo
  uid: 9cc5da57-9d42-11e7-9b25-90b11c132b3f
spec:
  persistentVolumeClaimName: ebs-pvc
  snapshotDataName: k8s-volume-snapshot-9cc8813e-9d42-11e7-8bed-90b11c132b3f
status:
  conditions:
  - lastTransitionTime: null
    message: Snapshot created successfully
    reason: ""
    status: "True"
    type: Ready
  creationTimestamp: null