处理卷组快照
持久卷(PV)的 Kubernetes 卷组快照 NetApp Trident 提供了创建多个卷快照(一组卷快照)的功能。此卷组快照表示在同一时间点拍摄的多个卷的副本。
|
|
VolumeGroupSnapshot 是 Kubernetes 中带有 beta API 的 beta 功能。Kubernetes 1.32 是 VolumeGroupSnapshot 所需的最低版本。 |
创建卷组快照
以下存储驱动程序支持卷组快照:
-
ontap-san驱动程序 - 仅适用于 iSCSI 和 FC 协议,不适用于 NVMe/TCP 协议。 -
ontap-san-economy- 仅适用于 iSCSI 协议。 -
ontap-nas
|
|
NetApp ASA r2 或 AFX 存储系统不支持卷组快照。 |
-
请确保您的 Kubernetes 版本为 K8s 1.32 或更高版本。
-
必须具有外部快照控制器和自定义资源定义 (CRD) 才能使用快照。这是 Kubernetes 编排器的职责(例如:Kubeadm、GKE、OpenShift)。
如果您的 Kubernetes 发行版不包括外部快照控制器和 CRD,请参阅 部署卷快照控制器。
如果在 GKE 环境中创建按需卷组快照,请勿创建快照控制器。GKE 使用内置的隐藏快照控制器。 -
在快照控制器 YAML 中,将
CSIVolumeGroupSnapshot功能门设置为 'true',以确保启用卷组快照。 -
在创建卷组快照之前创建所需的卷组快照类。
-
确保所有 PVC/卷都在同一个 SVM 上,以便能够创建 VolumeGroupSnapshot。
-
在创建 VolumeGroupSnapshot 之前,先创建 VolumeGroupSnapshotClass。有关更多信息,请参阅"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。
以下示例使用
pvc1-group-snap作为数据源和标签consistentGroupSnapshot: groupA创建 PVC。根据您的要求定义标签键和值。
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc1-group-snap
labels:
consistentGroupSnapshot: groupA
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 100Mi
storageClassName: sc1-1
-
创建具有相同标签 (
consistentGroupSnapshot: groupA的 VolumeGroupSnapshot,该标签在 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
使用组快照恢复卷数据
您可以使用作为 Volume Group Snapshot 一部分创建的单个快照来恢复单个 Persistent Volume。您无法将 Volume Group Snapshot 作为一个单位进行恢复。
使用卷快照还原 ONTAP CLI 将卷还原至先前快照中记录的状态。
cluster1::*> volume snapshot restore -vserver vs0 -volume vol3 -snapshot vol3_snap_archive
|
|
还原快照副本时,将覆盖现有卷配置。创建快照副本后对卷数据所做的更改将丢失。 |
从快照就地还原卷
Trident 使用 TridentActionSnapshotRestore (TASR) CR 提供快速的就地卷恢复功能。此 CR 作为命令式 Kubernetes 操作,在操作完成后不会持续存在。
有关详细信息,请参见 "从快照就地还原卷"。
删除具有关联组快照的 PV
删除组卷快照时:
-
您可以整体删除 VolumeGroupSnapshots,而不是删除组中的单个快照。
-
如果在存在该 PersistentVolume 的快照时删除 PersistentVolumes,Trident 会将该卷移动到“deleting”状态,因为必须先删除快照,才能安全地删除该卷。
-
如果已使用分组快照创建克隆,然后要删除该组,则将开始克隆拆分操作,并且在完成拆分之前无法删除该组。
部署卷快照控制器
如果您的 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`到您的命名空间。