Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

永続ストレージのスナップショット

永続ストレージのスナップショットは、データのバックアップや復元を簡単に行うための機能です。 特定の時点でのボリュームのコピーを作成でき、ボリュームを以前の状態に戻すことや、新しいボリュームを作成できます。 一度作成したスナップショットは、元となったボリュームが更新されても状態が変わりません。 そのため、バックアップやバージョニング等の用途に利用できます。

このドキュメントでは、スナップショットの作成、管理、および使用方法について説明します。

ボリュームからスナップショットを作成する

既存のボリュームを元に、現時点の状態のスナップショットを作成します。

ここでは、以下のような PersistentVolumeClaim(PVC)があるとします。この PVC hello-sample-pvc に対して、スナップショットを作成したいとします。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: hello-sample-pvc
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 20Mi
  storageClassName: standard-rwo-<組織名>
  volumeMode: Filesystem
  1. スナップショットを作成する PVC の名前を指定した VolumeSnapshot リソースのマニフェストを作成します。
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
  name: hello-snapshot-v1
spec:
  source:
    persistentVolumeClaimName: hello-sample-pvc

このマニフェストを Kubernetes に適用することで、その瞬間のボリュームの状態が保存され、新規スナップショットが作成されます。

  1. スナップショットが正常に作成されたかどうかは、 kubectl get volumesnapshots で確認できます。
$ kubectl get volumesnapshots
NAME               READYTOUSE   SOURCEPVC       SOURCESNAPSHOTCONTENT   RESTORESIZE   SNAPSHOTCLASS   SNAPSHOTCONTENT                      CREATIONTIME   AGE
hello-snapshot-v1  true         hello-sample-pvc                           ...Mi         trident         snapcontent-..........   ..d            ..d

正常なスナップショットは READYTOUSE の項目が true となります。この場合 PersistentVolumeClaim からのスナップショットが成功しています。

Info

READYTOUSEtrue でない場合はまだ作成が完了していません。データをコピーするため、スナップショットの作成には数秒 〜1 分程度かかることがあります。

スナップショットからボリュームを復元する

以下のように PVC のマニフェストを書くことで、スナップショットから新たなボリュームを作成できます。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: hello-sample-pvc-restored
spec:
  accessModes:
  - ReadWriteOnce
  volumeMode: Filesystem
  resources:
    requests:
      storage: 20Mi
  storageClassName: standard-rwo-<組織名>
  dataSource:
    name: hello-snapshot-v1
    kind: VolumeSnapshot
    apiGroup: snapshot.storage.k8s.io