云原生存储编排器Rook

                                              作者:尹正杰

版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.Rook概述

1.rook概述

Rook是一个开源的云原生存储编排器,为Ceph存储提供平台、框架和支持,以便与云原生环境进行原生集成。

Ceph是一个分布式存储系统,提供文件、块和对象存储,部署在大规模生产集群中。

Rook自动化了Ceph的部署和管理,以提供自我管理、自我扩展和自我修复的存储服务。Rook操作员通过构建Kubernetes资源来部署、配置、配置、扩展、升级和监控Ceph来实现这一点。

Ceph运营商于2018年12月在Rook v0.9版本中宣布稳定,提供了多年的生产存储平台。Rook由云原生计算基金会(CNCF)托管,是一个毕业级项目。

Rook是用Golang实现的,ceph是用C++实现的,其中数据路径经过高度优化。


简而言之,Rook是一个自管理的分布式存储编排系统,可以为kubernetes提供便利的存储解决方案,Rook本身并不提供存储,而是kubernetes和存储之间提供适配层,简化存储系统的部署和维护工作。目前主要支持存储系统包括但不限于Ceph,Cassandra,NFS等。

从本质上来讲,Rook是一个可以提供ceph集群管理能力的Operator,Rook使用CRD一个控制器来对Ceph之类的资源进行部署和管理。

官网链接:
	https://rook.io/
	
github地址:
	https://github.com/rook/rook

2.Rook和K8S版本对应关系

如上图所示,我的K8S 1.23.17最高能使用的Rook版本为v1.13。

参考链接:
	https://rook.io/docs/rook/v1.13/Getting-Started/Prerequisites/prerequisites/

二.k8s对接Rook

1.部署Rook

在部署Rook前,建议所有的worker节点删除污点且每个节点最少添加一块大于5GB的空闲磁盘。

	1.下载指定版本的Rook
[root@master231 ~]# wget https://github.com/rook/rook/archive/refs/tags/v1.13.10.tar.gz


	2.解压软件包
[root@master231 ~]# tar xf v1.13.10.tar.gz 

	3.创建Rook
[root@master231 ~]# cd rook-1.13.10/deploy/examples/
[root@master231 examples]# 
[root@master231 examples]# kubectl apply -f crds.yaml -f common.yaml -f operator.yaml 


	4.部署Ceph
[root@master231 examples]# kubectl apply -f cluster.yaml 


	5.部署Rook Ceph工具
[root@master231 examples]# kubectl apply -f toolbox.yaml 


	6.部署CephUI
[root@master231 examples]# kubectl apply -f dashboard-external-https.yaml 

	7.查看Pod列表
[root@master231 examples]# kubectl get pods,svc -n rook-ceph 

	8.获取ceph dashboard的登录密码
[root@master231 examples]# kubectl -n rook-ceph get secrets rook-ceph-dashboard-password -o yaml

    9.访问Ceph的WebUI
如上图所示,我们可以查看到当前集群节点的OSD列表啦~

其他部署方式,推荐阅读:
	https://rook.io/docs/rook/v1.13/Getting-Started/quickstart/#deploy-the-rook-operator

2.查看集群的OSD列表

[root@master231 yinzhengjie]# kubectl get pods -o wide -n rook-ceph -l app=rook-ceph-tools
NAME                               READY   STATUS    RESTARTS   AGE     IP              NODE        NOMINATED NODE   READINESS GATES
rook-ceph-tools-5846d4dc6c-nvnjv   1/1     Running   0          7m39s   10.100.140.81   worker233   <none>           <none>
[root@master231 yinzhengjie]# 
[root@master231 yinzhengjie]# 
[root@master231 yinzhengjie]# kubectl -n rook-ceph exec -it rook-ceph-tools-5846d4dc6c-nvnjv -- bash
bash-4.4$ 
bash-4.4$ ceph -s
  cluster:
    id:     0d44970a-5b70-45f1-b78d-e495ab031fee
    health: HEALTH_OK
 
  services:
    mon: 3 daemons, quorum a,b,c (age 5m)
    mgr: a(active, since 3m), standbys: b
    osd: 6 osds: 6 up (since 4m), 6 in (since 5m)
 
  data:
    pools:   1 pools, 1 pgs
    objects: 2 objects, 449 KiB
    usage:   159 MiB used, 4.5 TiB / 4.5 TiB avail
    pgs:     1 active+clean
 
bash-4.4$ 
bash-4.4$ ceph osd tree
ID  CLASS  WEIGHT   TYPE NAME           STATUS  REWEIGHT  PRI-AFF
-1         4.46489  root default                                 
-3         1.48830      host master231                           
 0    hdd  0.48830          osd.0           up   1.00000  1.00000
 3    hdd  1.00000          osd.3           up   1.00000  1.00000
-5         1.48830      host worker232                           
 1    hdd  0.48830          osd.1           up   1.00000  1.00000
 4    hdd  1.00000          osd.4           up   1.00000  1.00000
-7         1.48830      host worker233                           
 2    hdd  0.48830          osd.2           up   1.00000  1.00000
 5    hdd  1.00000          osd.5           up   1.00000  1.00000
bash-4.4$ 

3.K8S对接ceph

参考链接:
	https://www.cnblogs.com/yinzhengjie/p/14351091.html
posted @ 2024-12-08 22:16  尹正杰  阅读(39)  评论(0编辑  收藏  举报