部署条件
- Rook officially supports v1 snapshots for Kubernetes v1.20+.
- Install the snapshot controller and snapshot v1 CRD as required. More info can be foundhere.
安装快照控制器和CRD:
安装快照 CRD:
git clone https://github.com/kubernetes-csi/external-snapshotter.git
kubectl kustomize /root/crd/external-snapshotter/client/config/crd |kubectl create -f -
安装快照控制器:
kubectl -n kube-system kustomize /root/crd/external-snapshotter/deploy/kubernetes/snapshot-controller | kubectl create -f
安装 CSI 驱动程序:
kubectl kustomize /root/crd/external-snapshotter/deploy/kubernetes/csi-snapshotter/ | kubectl create -f -
CephFS 快照:
拉取镜像
docker pull registry.k8s.io/sig-storage/csi-snapshotter:v6.3.1
docker pull registry.k8s.io/sig-storage/snapshot-controller:v6.3.1
docker pull registry.k8s.io/sig-storage/hostpathplugin:v1.11.0
创建卷快照类
kubectl create -f deploy/examples/csi/cephfs/snapshotclass.yaml
创建卷快照
1、在snapshot.yaml中,volumeSnapshotClassName应该是之前创建类名称
2、persistentVolumeClaimName是 CephFS CSI 驱动程序已创建的 PVC 的名称
kubectl create -f deploy/examples/csi/cephfs/snapshot.yaml
验证 CephFS 快照
READYTOUSE当的字段设置为 true时,快照将准备好恢复到新的 PVC volumesnapshot。
[root@master rook]# kubectl get volumesnapshotclass
NAME DRIVER DELETIONPOLICY AGE
csi-cephfsplugin-snapclass rook-ceph.cephfs.csi.ceph.com Delete 39s
[root@master rook]# kubectl get volumesnapshot
NAME READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT RESTORESIZE SNAPSHOTCLASS SNAPSHOTCONTENT CREATIONTIME AGE
cephfs-pvc-snapshot true cephfs-pvc 5Gi csi-cephfsplugin-snapclass snapcontent-79f5c87f-ddc1-4263-bfac-42efc9c0b261 40s 41s
将快照恢复到新的 PVC
1、从快照创建新的 PVC,把cephfs-pvc 恢复到cephfs-pvc-restore
2、dataSource: name: cephfs-pvc-snapshot(上一步创建的快照名称)
kubectl create -f deploy/examples/csi/cephfs/pvc-restore.yaml
验证 CephFS 恢复 PVC
[root@master rook]# kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
cephfs-pvc Bound pvc-adc20c44-9c74-4e28-81d1-a222014e3056 5Gi RWO rook-cephfs 22h
cephfs-pvc-restore Bound pvc-1cf36e3d-6fff-46d2-b2fb-f31f6d67e7d5 5Gi RWX rook-cephfs 63s
RBD 快照:
创建卷快照类
kubectl create -f deploy/examples/csi/rbd/snapshotclass.yaml
创建卷快照
1、上一步创建的类名称:volumeSnapshotClassName: csi-rbdplugin-snapclass
2、备份的pvc名称source:persistentVolumeClaimName: rbd-pvc
kubectl create -f deploy/examples/csi/rbd/snapshot.yaml
验证 RBD 快照创建
READYTOUSE当的字段设置为 true时,快照将准备好恢复到新的 PVC volumesnapshot。
$ kubectl get volumesnapshotclass
NAME DRIVER DELETIONPOLICY AGE
csi-rbdplugin-snapclass rook-ceph.rbd.csi.ceph.com Delete 3h55m
$ kubectl get volumesnapshot
NAME READYTOUSE SOURCEPVC SOURCESNAPSHOTCONTENT RESTORESIZE SNAPSHOTCLASS SNAPSHOTCONTENT CREATIONTIME AGE
rbd-pvc-snapshot true rbd-pvc 1Gi csi-rbdplugin-snapclass snapcontent-79090db0-7c66-4b18-bf4a-634772c7cac7 3h50m 3h51m
将快照恢复到新的 PVC
1、从快照创建新的 PVC,把rbd-pvc恢复到rbd-pvc-restore
kubectl create -f deploy/examples/csi/rbd/pvc-restore.yaml
验证 RBD 克隆 PVC 创建
$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
rbd-pvc Bound pvc-84294e34-577a-11e9-b34f-525400581048 1Gi RWO rook-ceph-block 34m
rbd-pvc-restore Bound pvc-575537bf-577f-11e9-b34f-525400581048 1Gi RWO rook-ceph-block 8s
标签:kubectl,Rook,快照,rbd,Ceph,pvc,csi,cephfs
From: https://blog.51cto.com/u_14458428/9028684