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

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

#作者:Unstopabler

文章目录

  • 前言
  • 部署rook-ceph on kubernets条件
  • Ceph快照概述
  • 什么是PVC
  • 安装快照控制器和CRD
    • 1.安装crds资源
    • 2.安装控制器
    • 3.安装快照类

前言

Rook 是一个开源的云原生存储编排器,为各种存储解决方案提供平台、框架和支持,以便与云原生环境进行原生集成。
Rook 将分布式存储系统转变为自管理、自扩展、自修复的存储服务。它使存储管理员的部署、引导、配置、配置、扩展、升级、迁移、灾难恢复、监控和资源管理等任务自动化。简而言之,Rook 就是一组 Kubernetes 的 Operator,它可以完全控制多种数据存储解决方案(例如 Ceph、EdgeFS、Minio、Cassandra)的部署,管理以及自动恢复。rook利用Kubernetes平台的强大功能,通过Kubernetes Operator为每个存储提供商提供服务。Rook目前支持Ceph、NFS、Minio Object Store和CockroachDB。

部署rook-ceph on kubernets条件

  • 已经部署好的kubernetes集群1.19版本或者更高
  • osd节点需要有未格式化文件系统磁盘,至少需要3块硬盘

注:这里pvc快照基于rook-ceph为云原生存储支撑,
部署参考文档:https://rook.io/docs/rook/v1.10/Getting-Started/quickstart/#tldr

rook与kubernets结合架构如如下
在这里插入图片描述

Ceph快照概述

在这里插入图片描述
Ceph rbd块原生提供了快照与克隆的能力,什么是快照?快照就是镜像某个时刻的状态,包括当时已经落盘的数据。制作快照后成为一个只读镜像文件,无法对快照的数据进行写入操作,因此需要保护起来,数据丢失之后可以基于快照进行回滚操作。rbd提供一个好用的功能copy-on-write,即基于快照快速的克隆功能,克隆处理的子镜像和快照是一个相互依赖的关系,可以完成虚拟机秒级的高级特性。
在这里插入图片描述
快照卷作为源数据,提供给上层业务使用应用于对数据只读场景,如开发测试的部分场景。该场景下,先对逻辑卷进行快照创建,将创建好的快照卷提供给上层业务使用,快照卷的只读特性不仅可满足上层业务的访问需求,也可以有效防止误操作对原逻辑卷数据的更改。

Ceph-rbd快照详解 官方文档:https://docs.ceph.com/en/latest/rbd/rbd-snapshot/

什么是PVC

PVC是PersistentVolumeClaim的缩写,pvc描述 Pod想要使用的持久化属性,比如存储大小、读写权限等。PVC是在Kubernetes中一种抽象的存储卷类型,代表了某个具体类型存储的数据卷表达。 其设计意图是分离存储与应用编排,将存储细节抽象出来并实现存储的编排。 这样Kubernetes中存储卷对象独立于应用编排而单独存在,在编排层面使应用和存储解耦。
容器中并没有直接使用rbd块集成,而是通过pvc实现和底层块存储的调用,容器中完成快照制作,需要snapshot的控制器来实现这个功能,snapshot控制器是一个第三方crd,其通过crds的方式和kubernets集成,能够完成pvc快照到底层rbd块的控制逻辑。

安装快照控制器和CRD

1.安装crds资源

下载第三方crds

[root@k8s-master~]#git clone https://github.com/kubernetes-csi/external-snapshotter.git
Cloning into 'external-snapshotter'...
remote: Enumerating objects: 51112, done.
remote: Total 51112 (delta 0), reused 0 (delta 0), pack-reused 51112
Receiving objects: 100% (51112/51112), 64.98 MiB | 1.85 MiB/s, done.
Resolving deltas: 100% (26577/26577), done.
Updating files: 100% (4018/4018), done.

应用crd资源

[root@k8s-master ~]# kubectl apply -f external-snapshotter/client/config/crd/
customresourcedefinition.apiextensions.k8s.io/volumesnapshotclasses.snapshot.storage.k8s.io configured
customresourcedefinition.apiextensions.k8s.io/volumesnapshotcontents.snapshot.storage.k8s.io configured
customresourcedefinition.apiextensions.k8s.io/volumesnapshots.snapshot.storage.k8s.io configured
[root@k8s-master ~]#

查看crd资源

[root@k8s-master ~]# kubectl get customresourcedefinitions.apiextensions.k8s.io | grep volumesnap
volumesnapshotclasses.snapshot.storage.k8s.io    2022-11-23T01:51:36Z
volumesnapshotcontents.snapshot.storage.k8s.io   2022-11-23T01:51:36Z
volumesnapshots.snapshot.storage.k8s.io          2022-11-23T01:51:36Z
[root@k8s-master ~]#

2.安装控制器

[root@k8s-master ~]# kubectl apply -f external-snapshotter/deploy/kubernetes/snapshot-controller/
serviceaccount/snapshot-controller created
clusterrole.rbac.authorization.k8s.io/snapshot-controller-runner created
clusterrolebinding.rbac.authorization.k8s.io/snapshot-controller-role created
role.rbac.authorization.k8s.io/snapshot-controller-leaderelection created
rolebinding.rbac.authorization.k8s.io/snapshot-controller-leaderelection created
deployment.apps/snapshot-controller created
[root@k8s-master ~]#

查看控制器pod运行状态

[root@k8s-master ~]# kubectl get pod -n kube-system -l app=snapshot-controller
NAME                                   READY   STATUS    RESTARTS   AGE
snapshot-controller-5655ff978f-dh5dc   1/1     Running   0          8m12s
snapshot-controller-5655ff978f-fbtch   1/1     Running   0          8m12s
[root@k8s-master ~]#

3.安装快照类

控制器和crds后,为了能够使用快照的功能,需要定义一个volumesnapshotclass,类似storageclass,volumesnapshotclass是专门针对快照功能而提供的存储类,是kubernets中定义的一个特性。

安装方法如下

[root@k8s-master rbd]# pwd
/root/yml/rook/deploy/examples/csi/rbd
[root@k8s-master rbd]# kubectl apply -f snapshotclass.yaml
volumesnapshotclass.snapshot.storage.k8s.io/csi-rbdplugin-snapclass created
[root@k8s-master rbd]#

查看快照类

[root@k8s-master rbd]# kubectl get volumesnapshotclasses.snapshot.storage.k8s.io
NAME                      DRIVER                       DELETIONPOLICY   AGE
csi-rbdplugin-snapclass   rook-ceph.rbd.csi.ceph.com   Delete           38s
[root@k8s-master rbd]#
http://www.xdnf.cn/news/16919.html

相关文章:

  • NLP 和 LLM 区别、对比 和关系
  • 四、基于SpringBoot,MVC后端开发笔记
  • 【Mysql】联合索引生效分析案例
  • 【Electron】打包后图标不变问题,图标问题
  • JavaWeb笔记2-JavaScriptVueAjax
  • PyTorch分布式训练:从入门到精通
  • AG-UI 协议全面解析--下一代 AI Agent 交互框架医疗应用分析(下)
  • Js引用数据类型和ES6新特性
  • Python调用C++动态库
  • k8s云原生rook-ceph pvc快照与恢复(下)
  • 【Halcon 】Halcon 实战:如何为 XLD 模板添加极性信息以提升匹配精度?
  • iPhone 恢复出厂设置是否会删除所有内容?
  • 流式输出阻塞原因及解决办法
  • Pydantic模块学习
  • vivado扫盲:dcp(腾讯元宝)
  • QT6 源,十章绘图(2)画刷 QBrush:刷子只涉及填充颜色,线型,填充图片,以及变换矩阵这几个属性,附源代码带注释。
  • 从零到一:Linux内核MMU启动与虚拟内存体系建立全流程详解
  • gitlab+jenkins的ci/cd部署
  • win11 命令禁用客户体验改善计划
  • 区块链概述
  • 云计算k8s集群部署配置问题总结
  • ARM Cortex-M 处理器的应用
  • Hive SQL (HQL) 编辑指南
  • vscode cursor配置php的debug,docker里面debug
  • 20250801在Ubuntu24.04.2LTS下编译firefly_itx_3588j的Android12时解决boot.img过大的问题
  • django的数据库原生操作sql
  • PHP在现代Web开发中的应用与优势分析
  • ACS-电机控制Buffer-任意路径规划(PVSPLINE绘制圆形)
  • OCC任务新SOTA!华科提出SDGOCC:语义深度双引导的3D占用预测框架(CVPR 2025)
  • Shader开发(六)什么是着色器