使用磁碟區組快照
NetApp Trident提供了建立多個磁碟區(一組磁碟區快照)快照的功能,可用於建立持久磁碟區 (PV) 的 Kubernetes 磁碟區組快照。此磁碟區組快照表示在同一時間點從多個磁碟區中取得的副本。
|
|
VolumeGroupSnapshot 是 Kubernetes 中的測試版功能,其 API 也處於測試版階段。 VolumeGroupSnapshot 所需的最低 Kubernetes 版本為 1.32。 |
建立卷宗組快照
卷冊組快照受支援 `ontap-san`此驅動程式僅適用於 iSCSI 協議,尚不支援光纖通道 (FCP) 或 NVMe/TCP。開始之前
-
請確保您的 Kubernetes 版本為 K8s 1.32 或更高版本。
-
若要使用快照,您必須擁有外部快照控制器和自訂資源定義 (CRD)。這是 Kubernetes 編排器(例如:Kubeadm、GKE、OpenShift)的職責。
如果您的 Kubernetes 發行版不包含外部快照控制器和 CRD,請參閱部署磁碟區快照控制器。
如果在 GKE 環境中建立按需卷宗組快照,則不要建立快照控制器。 GKE 使用內建的隱藏快照控制器。 -
在快照控制器 YAML 中,設定 `CSIVolumeGroupSnapshot`將功能門設為“true”,以確保啟用磁碟區組快照。
-
在建立磁碟區組快照之前,請先建立所需的磁碟區組快照類別。
-
確保所有 PVC/磁碟區都在同一 SVM 上,以便能夠建立 VolumeGroupSnapshot。
-
在創建 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。
以下範例使用以下方法建立 PVC:
pvc1-group-snap`作為資料來源和標籤 `consistentGroupSnapshot: groupA。根據您的需求定義標籤的鍵和值。
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc1-group-snap
labels:
consistentGroupSnapshot: groupA
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
storageClassName: sc1-1
-
建立具有相同標籤的磁碟區組快照(
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
使用群組快照恢復磁碟區數據
您可以使用作為磁碟區組快照一部分建立的各個快照來還原各個持久性磁碟區。您無法將磁碟區組快照作為一個整體還原。
使用磁碟區快照還原ONTAP CLI 將磁碟區還原到先前快照中記錄的狀態。
cluster1::*> volume snapshot restore -vserver vs0 -volume vol3 -snapshot vol3_snap_archive
|
|
還原快照副本時,現有磁碟區配置將被覆寫。建立快照副本後對磁碟區資料所做的變更將會遺失。 |
從快照進行原地體積恢復
Trident利用快照提供快速、原位體積恢復功能 TridentActionSnapshotRestore(TASR)CR。此 CR 作為強制性 Kubernetes 操作,在操作完成後不會持久保存。
有關詳細信息,請參閱 "從快照進行原地體積恢復"。
刪除包含關聯群組快照的 PV
刪除群組磁碟區快照時:
-
您可以刪除整個 VolumeGroupSnapshots,而不是刪除群組中的單一快照。
-
如果在持久卷存在快照的情況下刪除該持久卷, Trident會將該卷移至「正在刪除」狀態,因為必須先刪除快照才能安全地刪除該卷。
-
如果使用分組快照建立了克隆,然後要刪除該群組,則會開始在克隆時進行分割操作,並且在拆分完成之前無法刪除該群組。
部署磁碟區快照控制器
如果您的 Kubernetes 發行版不包含快照控制器和 CRD,您可以如下部署它們。
-
建立磁碟區快照 CRD。
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.yamlkubectl 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`新增到您的命名空間。