Container Storage Snapshot
Cloud Native Storage (CNS) is a vSphere feature that allows Kubernetes to
auto-provision scalable storage on demand. CNS also provides vSphere administrator
visibility into container volumes through vCenter Server. Container Storage Interface (CSI)
is part of CNS, based on First Class Disk (FCD).
This section describes how to create volume
snapshots in a Kubernetes cluster and retrieve snapshot handles using CSI.
On Vanilla Kubernetes
Cluster
First create a VolumeSnapshotClass as in this
YAML example:
apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshotClass metadata: name: example-vanilla-rwo-filesystem-snapshotclass driver: csi.vsphere.vmware.com deletionPolicy: Delete
Run the
kubectl
command on
this file, sample_snapshotclass.yaml
in this example:$kubectl apply -f sample_snapshotclass.yaml
Next create a VolumeSnapshot as in this YAML
example:
apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: example-vanilla-rwo-filesystem-snapshot namespace: test-ns spec: volumeSnapshotClassName: example-vanilla-rwo-filesystem-snapshotclass source: persistentVolumeClaimName: example-vanilla-rwo-pvc
Run the
kubectl
command on
this file, sample_snapshot01.yaml
in this example:$kubectl apply -f sample_snapshot01.yaml
This will result in VolumeSnapshot and
VolumeSnapshotContent API objects. Inspect the Status field of the VolumeSnapshotContent
API object to find the SnapshotHandle field.
For example, if the FCD Volume ID and FCD
Snapshot ID for a FCD snapshot are the first two, the snapshot handle is a combination
of the two separated by plus mark.
4ef058e4-d941-447d-a427-438440b7d306 766f7158-b394-4cc1-891b-4667df0822fa 4ef058e4-d941-447d-a427-438440b7d306+766f7158-b394-4cc1-891b-4667df0822fa
Similarly you can create a second
VolumeSnapshot from the same volume and retrieve the SnapshotHandle from the
VolumeSnapshotContent API object.
With the SnapshotHandle of the first and
second snapshots, you can retrieve Changed Blocks using the vSphere API, as in standard
CBT backup.
TKGS Cluster
If you are on a Tanzu Kubernetes Grid Service
(TKGS) cluster, a VolumeSnapshotClass named
volumesnapshotclass-delete
is already created for you.Create a VolumeSnapshot as in this YAML
example:
apiVersion: snapshot.storage.k8s.io/v1 kind: VolumeSnapshot metadata: name: example-tkgs-rwo-filesystem-snapshot namespace: test-ns spec: volumeSnapshotClassName: volumesnapshotclass-delete source: persistentVolumeClaimName: example-tkgs-rwo-pvc
Run the
kubectl
command on
this file, sample_snapshot01.yaml
in this example: $ kubectl apply -f sample_snapshot01.yaml
This will result in VolumeSnapshot and
VolumeSnapshotContent API objects. Check the following annotation of the VolumeSnapshot
API object and retrieve the SnapshotHandle from <snap-id>:
"csi.vsphere.volume/snapshot": "<fcd-id>+<snap-id>"
Similarly you can create a second
VolumeSnapshot from the same volume and retrieve SnapshotHandle from VolumeSnapshot
annotation. With SnapshotHandle of the first and second snapshots, you can retrieve
Changed Blocks using the vSphere API, as in standard CBT backup.
For more information about the CSI Snapshot
feature, see topic "Volume Snapshot and Restore" in the manual
Getting Started with VMware vSphere
Container Storage Plug-in
on docs.vmware.com.