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

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_

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值