Skip to main content
本产品推出了新版本。
简体中文版经机器翻译而成,仅供参考。如与英语版出现任何冲突,应以英语版为准。

使用快照

贡献者

您可以创建永久性卷(PV)的Kubernetes VolumeSnapshot (卷快照)、以维护Astra Trident卷的时间点副本。此外、您还可以从现有卷快照创建一个新卷、也称为_clone_。支持卷快照 ontap-nasontap-sanontap-san-economysolidfire-sangcp-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 可以是 DeleteRetain。设置为时 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、则可以按如下所示进行部署。

步骤
  1. 创建卷快照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
  2. 在所需命名空间中创建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