卷快照
JuiceFS CSI Driver 支持 CSI 卷快照功能。你可以使用 VolumeSnapshot 资源来创建 JuiceFS 卷的快照,并使用快照来恢复数据。
前提条件
-
Kubernetes 集群版本 >= 1.17
-
已安装 Snapshot Controller 和 CRD
kubectl kustomize https://github.com/kubernetes-csi/external-snapshotter/client/config/crd | kubectl create -f -
kubectl kustomize https://github.com/kubernetes-csi/external-snapshotter/deploy/kubernetes/snapshot-controller | kubectl create -f - -
JuiceFS CSI Driver 版本 >= 0.31.0
-
在 JuiceFS CSI Driver Chart 的 values 中启用快照功能:
snapshot:
enabled: true
工作原理
JuiceFS CSI Driver 使用 juicefs clone 命令来实现快照功能。
-
创建快照:CSI Driver 会启动一个 Job,将源目录克隆到 PV 对应的文件系统的
.snapshots/<sourceVolumeID>/<snapshotID>目录。 -
恢复快照:CSI Driver 会启动一个 Job,将快照目录克隆到新的 PV 目录。
-
删除快照:CSI Driver 会启动一个 Job,删除
.snapshots/<sourceVolumeID>/<snapshotID>目录。
使用方法
1. 创建 VolumeSnapshotClass
首先,你需要创建一个 VolumeSnapshotClass。
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: juicefs-snapshot-class
driver: csi.juicefs.com
deletionPolicy: Delete
parameters:
csi.storage.k8s.io/snapshotter-secret-name: juicefs-secret
csi.storage.k8s.io/snapshotter-secret-namespace: kube-system
---
2. 创建 VolumeSnapshot
创建一个 VolumeSnapshot 资源来触发快照创建。
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: my-snapshot
spec:
volumeSnapshotClassName: juicefs-snapshot-class
source:
persistentVolumeClaimName: my-pvc