当前位置: 首页 > news >正文

k8s云原生rook-ceph pvc快照与恢复(下)

#作者:Unstopabler

文章目录

  • PVC快照创建与恢复
    • 1.pod使用pvc资源
    • 2.pod里面创建数据
    • 3.创建rbd-pvc快照
    • 4.pod容器误删数据
    • 5.pvc快照恢复
    • 6.pod挂载pvc验证数据

PVC快照创建与恢复

1.pod使用pvc资源

这里先创建一个pvc示例,pvc资源内容如下

[root@k8s-master rbd]# cat pvc.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: rbd-pvc
spec:accessModes:- ReadWriteOnceresources:requests:storage: 1GistorageClassName: rook-ceph-block
[root@k8s-master rbd]# kubectl apply -f pvc.yaml

创建pod资源,并使用pvc创建 rbd-pvc名称如下

[root@k8s-master rbd]# cat pod.yaml
---
apiVersion: v1
kind: Pod
metadata:name: csirbd-demo-pod
spec:containers:- name: web-serverimage: nginx:latestvolumeMounts:- name: mypvcmountPath: /var/lib/www/htmlvolumes:- name: mypvcpersistentVolumeClaim:claimName: rbd-pvcreadOnly: false
[root@k8s-master rbd]#
[root@k8s-master rbd]# kubectl apply -f pod.yaml

查看创建pod资源

[root@k8s-master rbd]# kubectl get pod
NAME                     READY   STATUS    RESTARTS      AGE
csirbd-demo-pod          1/1     Running   1 (16h ago)   17h
[root@k8s-master rbd]#

查看pvc运行状态

[root@k8s-master rbd]# kubectl get pvc
NAME      STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      AGE
rbd-pvc   Bound    pvc-c3f84e95-1b63-44f7-bbaa-02ac4e05c064   1Gi        RWO            rook-ceph-block   17h
[root@k8s-master rbd]#

2.pod里面创建数据

[root@k8s-master rbd]# kubectl exec -it csirbd-demo-pod -- bash
root@csirbd-demo-pod:/# df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          17G  5.0G   13G  30% /
tmpfs            64M     0   64M   0% /dev
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/sda2        17G  5.0G   13G  30% /etc/hosts
shm              64M     0   64M   0% /dev/shm
/dev/rbd0       974M   28K  958M   1% /var/lib/www/html
tmpfs           3.8G   12K  3.8G   1% /run/secrets/kubernetes.io/serviceaccount
tmpfs           2.0G     0  2.0G   0% /proc/acpi
tmpfs           2.0G     0  2.0G   0% /proc/scsi
tmpfs           2.0G     0  2.0G   0% /sys/firmware
root@csirbd-demo-pod:/# echo "hello rbd" > /var/lib/www/html/index1.html
root@csirbd-demo-pod:/# cat /var/lib/www/html/index1.html
hello rbd
root@csirbd-demo-pod:/#

3.创建rbd-pvc快照

[root@node1 rbd]# cat snapshot.yaml
---
# 1.17 <= K8s <= v1.19
# apiVersion: snapshot.storage.k8s.io/v1beta1
# K8s >= v1.20
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:name: rbd-pvc-snapshot
spec:volumeSnapshotClassName: csi-rbdplugin-snapclasssource:persistentVolumeClaimName: rbd-pvc
[root@node1 rbd]#[root@k8s-master rbd]# kubectl apply -f snapshot.yaml
volumesnapshot.snapshot.storage.k8s.io/rbd-pvc-snapshot created
[root@k8s-master rbd]#

查看卷rbd-pvc快照是否创建成功

[root@k8s-master rbd]# kubectl get volumesnapshot
NAME               READYTOUSE   SOURCEPVC   SOURCESNAPSHOTCONTENT   RESTORESIZE   SNAPSHOTCLASS             SNAPSHOTCONTENT                                    CREATIONTIME   AGE
rbd-pvc-snapshot   true         rbd-pvc                             1Gi           csi-rbdplugin-snapclass   snapcontent-e6ba28ed-990f-4cdd-9bfa-a7d6ea19e655   29s            27s
[root@k8s-master rbd]#
[root@k8s-master rbd]# kubectl get volumesnapshotcontents.snapshot.storage.k8s.io
NAME                                               READYTOUSE   RESTORESIZE   DELETIONPOLICY   DRIVER                       VOLUMESNAPSHOTCLASS       VOLUMESNAPSHOT     VOLUMESNAPSHOTNAMESPACE   AGE
snapcontent-e6ba28ed-990f-4cdd-9bfa-a7d6ea19e655   true         1073741824    Delete           rook-ceph.rbd.csi.ceph.com   csi-rbdplugin-snapclass   rbd-pvc-snapshot   default                   91s
[root@k8s-master rbd]#

4.pod容器误删数据

[root@k8s-master rbd]# kubectl exec -it csirbd-demo-pod -- bash
root@csirbd-demo-pod:/# ls /var/lib/www/html/
index.html  index1.html  lost+found
root@csirbd-demo-pod:/# rm -fr /var/lib/www/html/index*
root@csirbd-demo-pod:/# ls /var/lib/www/html/
lost+found
root@csirbd-demo-pod:/#

5.pvc快照恢复

当容器中rbd块数据丢失或者误删除之后,快照功能就非常重要了,可以基于快照做数据恢复,通过pvc调用volumesnapshot

[root@node1 rbd]# cat pvc-restore.yaml
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:name: rbd-pvc-restore
spec:storageClassName: rook-ceph-blockdataSource:name: rbd-pvc-snapshotkind: VolumeSnapshotapiGroup: snapshot.storage.k8s.ioaccessModes:- ReadWriteOnceresources:requests:storage: 1Gi
[root@node1 rbd]#
[root@k8s-master rbd]# kubectl apply -f pvc-restore.yaml
persistentvolumeclaim/rbd-pvc-restore created
[root@k8s-master rbd]#[root@k8s-master rbd]# kubectl get pvc
NAME              STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS      AGE
rbd-pvc           Bound    pvc-c3f84e95-1b63-44f7-bbaa-02ac4e05c064   1Gi        RWO            rook-ceph-block   17h
rbd-pvc-restore   Bound    pvc-bf601bee-b8f8-437c-9b56-bf7fc7f32bb4   1Gi        RWO            rook-ceph-block   8s
[root@k8s-master rbd]#

6.pod挂载pvc验证数据

pod容器中调用pvc获取到快照中的数据

[root@k8s-master rbd]# cat pod-pvc-restore.yaml
---
apiVersion: v1
kind: Pod
metadata:name: csirbd-restore-pod
spec:containers:- name: web-serverimage: nginx:latestvolumeMounts:- name: mypvcmountPath: /var/lib/www/htmlvolumes:- name: mypvcpersistentVolumeClaim:claimName: rbd-pvc-restorereadOnly: false
[root@k8s-master rbd]# kubectl apply -f pod-pvc-restore.yaml
pod/csirbd-restore-pod created
[root@k8s-master rbd]# kubectl get pod -owide | grep csirbd-restore-pod
csirbd-restore-pod       1/1     Running   0             66s   10.244.2.81   k8s-node2   <none>           <none>
[root@k8s-master rbd]#

进入容器验证查看数据

[root@k8s-master rbd]# kubectl exec -it csirbd-restore-pod -- df -h
Filesystem      Size  Used Avail Use% Mounted on
overlay          17G  4.9G   13G  29% /
tmpfs            64M     0   64M   0% /dev
tmpfs           2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/sdb2        17G  4.9G   13G  29% /etc/hosts
shm              64M     0   64M   0% /dev/shm
/dev/rbd0       974M   32K  958M   1% /var/lib/www/html
tmpfs           3.8G   12K  3.8G   1% /run/secrets/kubernetes.io/serviceaccount
tmpfs           2.0G     0  2.0G   0% /proc/acpi
tmpfs           2.0G     0  2.0G   0% /proc/scsi
tmpfs           2.0G     0  2.0G   0% /sys/firmware
[root@k8s-master rbd]# kubectl exec -it csirbd-restore-pod -- ls /var/lib/www/html
index.html  index1.html  lost+found
[root@k8s-master rbd]#
http://www.dtcms.com/a/309030.html

相关文章:

  • 前端SWR策略:优化数据请求
  • STM32学习记录--Day5
  • AG-UI 协议全面解析--下一代 AI Agent 交互框架医疗应用分析(下)
  • 接口幂等性
  • 【Flutter】双路视频播放方案
  • 《R for Data Science (2e)》免费中文翻译 (第3章) --- Data transformation(1)
  • Jupyter Notebook 使用指南
  • Idea集成Jenkins Control插件,在IDEA中触发Jenkins中项目的构建
  • 【数据可视化-78】2025年上半年广东省各市GDP排名深度解析与可视化:Python + Pyecharts 深度洞察(含完整数据、代码)
  • 【Linux学习|黑马笔记|Day1】Linux初识、安装VMware Workstation、安装CentOS7、远程连接、虚拟机快照
  • Cradle:颠覆AI Agent 操作本地软件,AI驱动的通用计算机控制框架,如何让基础模型像人一样操作你的电脑?
  • 九、Maven入门学习记录
  • 嵌入式筑基之STM32启动流程
  • AG-UI 协议全面解析--下一代 AI Agent 交互框架医疗应用分析(上)
  • SQL注入SQLi-LABS 靶场less25a-28a详细通关攻略
  • LoRA低秩适配的原理
  • anaconda searchanaconda show | conda 检索包资源安装指定版本包指定源安装命令package
  • Mysql-视图,函数,存储过程,触发器
  • 日语学习-日语知识点小记-构建基础-JLPT-N3阶段(12):文法+单词
  • conda issue
  • C++-2025.7.31
  • LaTeX 表格制作全面指南
  • js防抖、节流和扁平化实现
  • 链特异性文库是什么?为什么它在转录组测序中越来越重要?
  • 【Kubernetes 指南】基础入门——Kubernetes 201(三)
  • 第13届蓝桥杯C++青少组中/高级组选拔赛2022年3月13日真题
  • pdw估计edw怎么估计
  • 数据结构: 双向链表
  • Servlet修改新增思路
  • 数据大集网:引领精准获客新时代的优质平台