ceph-csi/docs/snap-clone.md
Niraj Yadav 91b8efe473 doc: Remove the 400 snapshot limitation
The support for more than 400 snapshots was
added at: https://github.com/ceph/ceph/pull/38553

This patch also removes the note regarding
deletion of PVCs with snapshots.

Closes: #4681

Signed-off-by: Niraj Yadav <niryadav@redhat.com>
2024-08-27 09:24:35 +00:00

7.0 KiB

Create snapshot and Clone Volume

Prerequisite

  • For snapshot functionality to be supported for your Kubernetes cluster, the Kubernetes version running in your cluster should be >= v1.17. We also need the snapshot controller deployed in your Kubernetes cluster along with csi-snapshotter sidecar container. Refer external-snapshotter for more information on these sidecar controllers. There should be a volumesnapshotclass object present in the cluster for snapshot request to be satisfied.

    • To install snapshot controller and CRD
    ./scripts/install-snapshot.sh install
    

    To install from specific external-snapshotter version, you can leverage SNAPSHOT_VERSION variable, for example:

    SNAPSHOT_VERSION="v5.0.1" ./scripts/install-snapshot.sh install
    
    • In the future, you can choose to cleanup by running
    ./scripts/install-snapshot.sh cleanup
    

Create CephFS Snapshot and Clone Volume

Create CephFS SnapshotClass

kubectl create -f ../examples/cephfs/snapshotclass.yaml

Create CephFS Snapshot

The snapshot is created on/for an existing PVC. You should have a PVC in bound state before creating snapshot from it. It is recommended to create a volume snapshot or a PVC clone only when the PVC is not in use. Please refer pvc creation doc for more information on how to create a PVC.

  • Verify if PVC is in Bound state
$ kubectl get pvc
NAME              STATUS        VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
csi-cephfs-pvc    Bound         pvc-1ea51547-a88b-4ab0-8b4a-812caeaf025d   1Gi        RWX            csi-cephfs-sc  20h
  • Create snapshot of the bound PVC
$ kubectl create -f ../examples/cephfs/snapshot.yaml
volumesnapshot.snapshot.storage.k8s.io/cephfs-pvc-snapshot created
  • Get details about the snapshot
$ kubectl get volumesnapshot
NAME                  READYTOUSE   SOURCEPVC       SOURCESNAPSHOTCONTENT   RESTORESIZE   SNAPSHOTCLASS                SNAPSHOTCONTENT                                    CREATIONTIME   AGE
cephfs-pvc-snapshot   true         csi-cephfs-pvc                          1Gi           csi-cephfsplugin-snapclass   snapcontent-34476204-a14a-4d59-bfbc-2bbba695652c   3s             6s

  • Get details about the volumesnapshotcontent
$ kubectl get volumesnapshotcontent
NAME                                               READYTOUSE   RESTORESIZE   DELETIONPOLICY   DRIVER                                  VOLUMESNAPSHOTCLASS                         VOLUMESNAPSHOT            VOLUMESNAPSHOTNAMESPACE   AGE
snapcontent-881cb74a-9dff-4989-a83d-eece5ed079af   true         1073741824    Delete           cephfs.csi.ceph.com                     csi-cephfsplugin-snapclass                  cephfs-pvc-snapshot       default                   12m

Restore CephFS Snapshot

kubectl create -f ../examples/cephfs/pvc-restore.yaml
$ kubectl get pvc
NAME                 STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
csi-cephfs-pvc       Bound    pvc-1ea51547-a88b-4ab0-8b4a-812caeaf025d   1Gi        RWX            csi-cephfs-sc  20h
cephfs-pvc-restore   Bound    pvc-95308c75-6c93-4928-a551-6b5137192209   1Gi        RWX            csi-cephfs-sc  11m

Clone CephFS PVC

kubectl create -f ../examples/cephfs/pvc-clone.yaml
$ kubectl get pvc
NAME                 STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
csi-cephfs-pvc       Bound    pvc-1ea51547-a88b-4ab0-8b4a-812caeaf025d   1Gi        RWX            csi-cephfs-sc  20h
cephfs-pvc-clone     Bound    pvc-b575bc35-d521-4c41-b4f9-1d733cd28fdf   1Gi        RWX            csi-cephfs-sc  39s
cephfs-pvc-restore   Bound    pvc-95308c75-6c93-4928-a551-6b5137192209   1Gi        RWX            csi-cephfs-sc  55m

Create RBD Snapshot and Clone Volume

In the examples/rbd directory you will find two files related to snapshots: snapshotclass.yaml and snapshot.yaml

Once you created RBD PVC, you'll need to customize snapshotclass.yaml and make sure the clusterid parameter matches clusterid mentioned in the storageclass from which the PVC got created. If you followed the documentation to create the rbdplugin, you shouldn't have to edit any other file.

After configuring everything you needed, deploy the snapshotclass:

Create RBD SnapshotClass

kubectl create -f snapshotclass.yaml

Verify that the SnapshotClass was created

$ kubectl get volumesnapshotclass
NAME                                        DRIVER                                  DELETIONPOLICY   AGE
csi-rbdplugin-snapclass                     rbd.csi.ceph.com                        Delete           30m

Create RBD Snapshot

kubectl create -f snapshot.yaml

Verify if your Volume Snapshot has successfully been created

$ kubectl get volumesnapshot
NAME               READYTOUSE   SOURCEPVC   SOURCESNAPSHOTCONTENT   RESTORESIZE   SNAPSHOTCLASS                            SNAPSHOTCONTENT                                    CREATIONTIME   AGE
rbd-pvc-snapshot   true         rbd-pvc                             1Gi           csi-rbdplugin-snapclass                  snapcontent-905e6015-2403-4302-8a4e-cd3bdf63507b   78s            79s

Restore RBD Snapshot

To restore the snapshot to a new PVC, create pvc-restore.yaml and a testing pod pod-restore.yaml

kubectl create -f pvc-restore.yaml
kubectl create -f pod-restore.yaml

Clone RBD PVC

$ kubectl create -f ../examples/rbd/pvc-clone.yaml
$ kubectl get pvc
NAME              STATUS    VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      AGE
rbd-pvc           Bound     pvc-c2ffdc98-3abe-4b07-838c-35a2a8067771   1Gi        RWO            rook-ceph-block   41m
rbd-pvc-clone     Bound     pvc-b575bc35-d521-4c41-b4f9-1d733cd28fdf   1Gi        RWO            rook-ceph-block   45m
rbd-pvc-restore   Bound     pvc-95308c75-6c93-4928-a551-6b5137192209   1Gi        RWO            rook-ceph-block   45m