优点知识云原生存储 Rook 实战 分享笔记

本文介绍了Rook存储系统的基本组件,包括Rook operator、Rook agent和Discover,并详细阐述了Rook的工作原理、启动流程以及在Kubernetes环境中的部署。此外,还提供了创建和管理Rook存储的步骤,如配置operator、agent、Discover,以及清理Rook的方法。文章通过具体的实验环境play-with-k8s展示了Rook的设置过程,并解析了Rook的常用命令和配置文件,如cluster.yaml、pool.yaml、objectStore和filesystem。最后,补充了PV和PVC的相关知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

rook基本组件:

rook  operator: 是一个简单的容器,具有引导和监视存储集群的功能,供提供最基本的RADOS存储。管理CRD,对象存储,文件系统。

Rook agent: 这些代理是在每个Kubernetes节点上部署的pod。每个代理都配置一个Flexvolume插件,该插件与Kubernetes的卷控制器框架集成在一起。处理节点上所需的所有存储操作,例如附加网络存储设备,安装卷和格式化文件系统。

Discover: 定期节点发现新设备

3.rook实现原理描述:

rook 是基于FelixVolume存储插件机制实现。

4.启动流程

5.rook 控制流

1.rook operator运行,并在每台机器上运行一个rook agent的pod

 https://pan.baidu.com/s/1J9o_yqzJ_nGMigxKLEkXOA?pwd=v7bu

2.创建一个pvc,并指定storageclass使用rook.io/block provisionor

3.operator  provisionr 的provision()函数被调用,用以在集群中创建block image。此时,Provision阶段已完成,pvc/pv被考虑绑定到一起;

4.当使用pvc的pod被创建时,kubelete将调用 rook Felexxvolume的mount函数,用于使用预定存储;

5. 随后,agent将会按照CRD的描述创建一个volume并attach到该物理机上;

6.agent将volume map到本地机器上,并更新CRD的状态以及设备的路径值(例如/dev/rbd0)

7.控制权接着转交给driver,如果mapping能够成功执行,则driver将把指定的设备mount到指定的路径上。若在配置文件中还指明了文件系统的类型,则driver还会对该卷进行文件系统格式化操作。

8.driver将反馈kubelet Mount()操作已成功

6.创建rook,实验环境可以使用: play-with-k8s

# 说在前面的重点,删除重建operator,cluster时,要删除/var/lib/rook.

cd cluster/examples/kubernetes/ceph

kubectl create -f operator.yaml

#主要是一些自定义资源对象的定义CRD有:Cluster、Filesystem、ObjectStore、Pool、Volume;还创建了rook的三种组件Operator、Agent、Discover。

kubectl create -f cluster.yaml

#cluster.yaml中主要创建了一个Cluster(ceph集群)自定义资源对象(CR)

#如果出现如下报错,请参考如下

解决方案参考1:

配置operator.yaml,需要和kubelet的--volume-plugin-dir参数中的保持一致

vim operator.yaml

      - name: FLEXVOLUME_DIR_PATH

        value: "/usr/libexec/kubernetes/kubelet-plugins/volume/exec"

解决方案参考2

exit status 2. rbd: error opening pool 'replicapool': (2) No such file or directory -- 这个报错,我有遇到类似的问题,解决方法:在 rook-operator.yml 里添加

env:

- name: FLEXVOLUME_DIR_PATH

value: "/var/lib/kubelet/volumeplugins"

确保与kubelet 的--volume-plugin-dir一样。重新apply.重启kubelet.把rook-agent 和 rook-operator的pod删除,自动重建后等10分钟我的报错就消失了。

--volume-plugin-dir=/var/lib/kubelet/volumeplugins

7.清理rook

- 清理命名空间rook-system,其中包含rook Operator和rook agent

- 清理名称空间rook,其中包含rook存储集群(集群CRD)

- 各节点的/var/lib/rook目录,ceph mons和osds的配置都缓存于此

kubectl delete -n rook pool replicapool

kubectl delete storageclass rook-block

kubectl delete -n kube-system secret rook-admin

kubectl delete -f kube-registry.yaml

# 删除Cluster CRD

kubectl

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值