Skip to content

Cloning

Kubernetes PersistentVolumes, backed by simplyblock, can be instantly cloned. A clone refers back to the same data, as simplyblock is a full copy-on-write storage engine. That enables instant database forks which act independently after cloning.

Create a Volume Clone

To clone an existing PersistentVolume, it has to be named as the clone basis (dataSource) in the PersistentVolumeClaim Kubernetes resource.

PersistentVolumeClaim to clone an existing volume
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: my-persistent-volume-clone
spec:
  storageClassName: simplyblock-storage-class
  dataSource:
    name: original-persistent-volume-name # <- Name of the original volume
    kind: PersistentVolumeClaim
    apiGroup: ""
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 256Mi

Afterward, the PVC can be used as a normal PVC and added to a pod.

Using the cloned PersistentVolumeClaim
kind: Pod
apiVersion: v1
metadata:
  name: cloned-database
  labels:
    app: cloned-database
spec:
  containers:
  - name: alpine
    image: alpine:3
    imagePullPolicy: "IfNotPresent"
    command: ["sleep", "365d"]
    volumeMounts:
    - mountPath: "/mounted"
      name: my-cloned-volume
  volumes:
  - name: my-cloned-volume
    persistentVolumeClaim:
      claimName: my-persistent-volume-clone