使用快照
您可以创建永久性卷(PV)的Kubernetes VolumeSnapshot (卷快照)、以维护Astra Trident卷的时间点副本。此外、您还可以从现有卷快照创建一个新卷、也称为_clone_。支持卷快照 ontap-nas
, ontap-san
, ontap-san-economy
, solidfire-san
, gcp-cvs
,和 azure-netapp-files
驱动程序。
您必须具有外部快照控制器和自定义资源定义(CRD)。这是Kubernetes流程编排程序(例如:Kubeadm、GKE、OpenShift)的职责。
如果您的Kubernetes分发版不包含快照控制器和CRD、请参见 部署卷快照控制器。
如果在GKE-环境中创建按需卷快照、请勿创建快照控制器。GKE-使用内置的隐藏快照控制器。 |
第1步:创建 VolumeSnapshotClass
此示例将创建一个卷快照类。
cat snap-sc.yaml apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: csi-snapclass driver: csi.trident.netapp.io deletionPolicy: Delete
。 driver
指向Astra Trident的CSI驱动程序。 deletionPolicy
可以是 Delete
或 Retain
。设置为时 Retain
、存储集群上的底层物理快照会保留、即使在使用时也是如此 VolumeSnapshot
对象已删除。
有关详细信息、请参见链接:./trident引用/objects.html#Kubernetes -volumesnapshotclass-objects[VolumeSnapshotClass
]。
第 2 步:创建现有 PVC 的快照
此示例将创建现有PVC的快照。
cat snap.yaml apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: pvc1-snap spec: volumeSnapshotClassName: csi-snapclass source: persistentVolumeClaimName: pvc1
在此示例中、为名为的PVC创建快照 pvc1
快照的名称设置为 pvc1-snap
。
kubectl create -f snap.yaml volumesnapshot.snapshot.storage.k8s.io/pvc1-snap created kubectl get volumesnapshots NAME AGE pvc1-snap 50s
这就创建了 VolumeSnapshot
对象。VolumeSnapshot类似于PVC、并与关联 VolumeSnapshotContent
表示实际快照的对象。
可以标识 VolumeSnapshotContent
的对象 pvc1-snap
VolumeSnapshot的说明。
kubectl describe volumesnapshots pvc1-snap Name: pvc1-snap Namespace: default . . . Spec: Snapshot Class Name: pvc1-snap Snapshot Content Name: snapcontent-e8d8a0ca-9826-11e9-9807-525400f3f660 Source: API Group: Kind: PersistentVolumeClaim Name: pvc1 Status: Creation Time: 2019-06-26T15:27:29Z Ready To Use: true Restore Size: 3Gi . .
。 Snapshot Content Name
标识提供此快照的VolumeSnapshotContent对象。。 Ready To Use
参数表示可使用Snapshot创建新的PVC。
第 3 步:从 VolumeSnapshots 创建 PVC
以下示例将使用快照创建PVC:
cat pvc-from-snap.yaml apiVersion: v1 kind: PersistentVolumeClaim metadata: name: pvc-from-snap spec: accessModes: - ReadWriteOnce storageClassName: golden resources: requests: storage: 3Gi dataSource: name: pvc1-snap kind: VolumeSnapshot apiGroup: snapshot.storage.k8s.io
dataSource
显示必须使用名为的VolumeSnapshot创建PVC pvc1-snap
作为数据源。此操作将指示 Astra Trident 从快照创建 PVC 。创建 PVC 后,可以将其附加到 Pod 上,并像使用任何其他 PVC 一样使用。
删除具有关联快照的永久性卷时,相应的 Trident 卷将更新为 " 正在删除 " 状态。要删除 Astra 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-6.1/client/config/crd/snapshot.storage.k8s.io_volumesnapshotclasses.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-6.1/client/config/crd/snapshot.storage.k8s.io_volumesnapshotcontents.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-6.1/client/config/crd/snapshot.storage.k8s.io_volumesnapshots.yaml
-
在所需命名空间中创建Snapshot控制器。编辑以下 YAML 清单以修改命名空间。
kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-6.1/deploy/kubernetes/snapshot-controller/rbac-snapshot-controller.yaml kubectl apply -f https://raw.githubusercontent.com/kubernetes-csi/external-snapshotter/release-6.1/deploy/kubernetes/snapshot-controller/setup-snapshot-controller.yaml