ボリュームグループスナップショットの操作
Kubernetes の永続ボリューム(PV)のボリュームグループスナップショット NetApp Trident は、複数のボリュームのスナップショット(ボリュームスナップショットのグループ)を作成する機能を提供します。このボリュームグループスナップショットは、同じ時点で作成された複数のボリュームのコピーを表します。
|
VolumeGroupSnapshot は、ベータ API を備えた Kubernetes のベータ機能です。VolumeGroupSnapshotに必要な最小バージョンは Kubernetes 1.32 です。 |
ボリュームグループのスナップショットを作成する
ボリュームグループスナップショットは、 `ontap-san`ドライバーはiSCSIプロトコル専用で、ファイバーチャネル(FCP)やNVMe/TCPではまだサポートされていません。始める前に
-
Kubernetes のバージョンが K8s 1.32 以上であることを確認してください。
-
スナップショットを操作するには、外部スナップショットコントローラとカスタムリソース定義(CRD)が必要です。Kubernetesオーケストレーションツール(例:Kubeadm、GKE、OpenShift)の役割を担っています。
Kubernetesディストリビューションに外部スナップショットコントローラとCRDが含まれていない場合は、 ボリュームSnapshotコントローラの導入 。
GKE 環境でオンデマンド ボリューム グループ スナップショットを作成する場合は、スナップショット コントローラを作成しないでください。GKEでは、内蔵の非表示のスナップショットコントローラを使用します。 -
スナップショットコントローラYAMLで、 `CSIVolumeGroupSnapshot`ボリューム グループのスナップショットが有効になっていることを確認するには、機能ゲートを 'true' に設定します。
-
ボリューム グループ スナップショットを作成する前に、必要なボリューム グループ スナップショット クラスを作成します。
-
VolumeGroupSnapshot を作成できるようにするには、すべての PVC/ボリュームが同じ SVM 上にあることを確認します。
-
VolumeGroupSnapshot を作成する前に、VolumeGroupSnapshotClass を作成します。詳細については、を参照してください "ボリュームグループスナップショットクラス"。
apiVersion: groupsnapshot.storage.k8s.io/v1beta1 kind: VolumeGroupSnapshotClass metadata: name: csi-group-snap-class annotations: kubernetes.io/description: "Trident group snapshot class" driver: csi.trident.netapp.io deletionPolicy: Delete
-
既存のストレージ クラスを使用して必要なラベルを持つ PVC を作成するか、これらのラベルを既存の PVC に追加します。
。要件に応じてラベルのキーと値を定義します
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc1-group-snap labels: consistentGroupSnapshot: groupA spec: accessModes: - ReadWriteOnce resources: requests: storage: 100Mi storageClassName: sc1-1
-
同じラベルのVolumeGroupSnapshotを作成する(
consistentGroupSnapshot: groupA
) を PVC で指定します。この例では、ボリューム グループのスナップショットを作成します。
apiVersion: groupsnapshot.storage.k8s.io/v1beta1 kind: VolumeGroupSnapshot metadata: name: "vgs1" namespace: trident spec: volumeGroupSnapshotClassName: csi-group-snap-class source: selector: matchLabels: consistentGroupSnapshot: groupA
グループスナップショットを使用してボリュームデータを回復する
ボリュームグループスナップショットの一部として作成された個々のスナップショットを使用して、個々の永続ボリュームを復元できます。ボリュームグループスナップショットをユニットとして復元することはできません。
ボリュームを以前のSnapshotに記録されている状態にリストアするには、ボリュームSnapshotリストアONTAP CLIを使用します。
cluster1::*> volume snapshot restore -vserver vs0 -volume vol3 -snapshot vol3_snap_archive
|
Snapshotコピーをリストアすると、既存のボリューム設定が上書きされます。Snapshotコピーの作成後にボリュームデータに加えた変更は失われます。 |
Snapshotからのインプレースボリュームのリストア
Tridentでは、(TASR)CRを使用してSnapshotからボリュームをインプレースで迅速にリストアできます TridentActionSnapshotRestore
。このCRはKubernetesの必須アクションとして機能し、処理の完了後も維持されません。
詳細については、を参照してください "Snapshotからのインプレースボリュームのリストア"。
関連付けられたグループスナップショットを含む PV を削除する
グループボリュームのスナップショットを削除する場合:
-
グループ内の個々のスナップショットではなく、VolumeGroupSnapshots 全体を削除できます。
-
PersistentVolume のスナップショットが存在している間に PersistentVolume が削除された場合、ボリュームを安全に削除する前にスナップショットを削除する必要があるため、Trident はそのボリュームを「削除中」状態に移行します。
-
グループ化されたスナップショットを使用してクローンを作成し、その後グループを削除する場合、クローン時に分割操作が開始され、分割が完了するまでグループを削除することはできません。
ボリュームSnapshotコントローラの導入
KubernetesディストリビューションにスナップショットコントローラとCRDが含まれていない場合は、次のように導入できます。
-
ボリュームのSnapshot作成
cat snapshot-setup.sh
#!/bin/bash # Create volume snapshot CRDs kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.2/client/config/crd/groupsnapshot.storage.k8s.io_volumegroupsnapshotclasses.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.2/client/config/crd/groupsnapshot.storage.k8s.io_volumegroupsnapshotcontents.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.2/client/config/crd/groupsnapshot.storage.k8s.io_volumegroupsnapshots.yaml
-
スナップショットコントローラを作成します。
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.2/deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-8.2/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yaml
必要に応じて、を開きます deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml
およびを更新しますnamespace
に移動します。