k8s部署rook ceph

网友投稿 2023 2022-11-07 23:45:36

k8s部署rook ceph

Rook部署Ceph​​#​​

Rook版本

Ceph版本

K8S版本

Rook Ceph v1.8

Ceph Pacific v16.2.7 stable

kubernetes v1.20.4

1 Rook介绍​​#​​

Rook是一个自管理的分布式存储编排系统,可以为Kubernetes提供便利的存储解决方案,Rook本身并不提供存储,而是在Kubernetes和存储之间提供适配层,简化存储系统的部署和维护工作。目前,主要支持存储系统包括但不限于Ceph(主推)、Cassandra、NFS。Rook复用了k8s集群节点用于自动化部署Ceph集群,优点是部署Ceph集群方便,缺点是如果Ceph集群出现故障,很难排查错误,我个人还是倾向于使用独立的Ceph集群为k8s提供存储服务。官网: Rook架构图​​#​​

3 Rook在Kubernetes中部署Ceph​​#​​

官方文档: ​​Ceph Docs​​

(1) 先决条件

1) K8s集群,1.16版本+2) K8s至少3个工作节点3) 每个工作节点有一块未使用的硬盘4) Rook仅支持部署Ceph Nautilus(14.2.22)以上版本注:我这里k8s集群有4个节点,分别是k8s-master1、k8s-master2、k8s-node1、k8s-node2,四个节点各挂载一块20GB的未使用的硬盘作为osd提供存储服务。k8s-master2节点需要去污点,允许pod调度,命令如下。# kubectl taint node k8s-master2 node-role.kubernetes.io/master-

(2) 部署Ceph集群

1) 下载包并解压[root@k8s-master1 ~]# wget ~]# unzip v1.8.0.zip[root@k8s-master1 ~]# cd rook-1.8.0/deploy/examples/2) 部署所用到的镜像如下[root@k8s-master1 examples]# cat images.txtk8s.gcr.io/sig-storage/csi-attacher:v3.3.0k8s.gcr.io/sig-storage/csi-node-driver-registrar:v2.3.0k8s.gcr.io/sig-storage/csi-provisioner:v3.0.0k8s.gcr.io/sig-storage/csi-resizer:v1.3.0k8s.gcr.io/sig-storage/csi-snapshotter:v4.2.0quay.io/ceph/ceph:v16.2.7quay.io/cephcsi/cephcsi:v3.4.0quay.io/csiaddons/volumereplication-operator:v0.1.0rook/ceph:v1.8.0注:由于以上镜像的镜像源在国外,国内无法下载,前五个镜像源我修改为阿里官方同步国外的镜像源(registry.aliyuncs.com/google_containers/:),后四个镜像我FQ下载后上传到阿里个人账号的镜像仓库下了(registry.cn-hangzhou.aliyuncs.com/rook_image/:)。# grep <镜像名> crds.yaml common.yaml operator.yaml cluster.yaml toolbox.yaml dashboard-external-style="color:#596172">3) 应用yaml文件[root@k8s-master1 examples]# kubectl create -f crds.yaml -f common.yaml -f operator.yaml# 开始部署集群,有些镜像比较大(大于1G),pod完全启动大概1个小时左右[root@k8s-master1 examples]# kubectl create -f cluster.yaml

(3) 部署Rook Ceph 工具

[root@k8s-master1 examples]# kubectl create -f toolbox.yaml

(4) 部署Ceph Dashboard

[root@k8s-master1 examples]# kubectl apply -f dashboard-external-获取 dashboard admin密码[root@k8s-master1 examples]# kubectl -n rook-ceph get secret rook-ceph-dashboard-password -o \jsonpath="{['data']['password']}" | base64 -d输出 admin 用户的密码为: *Pfl:f_6FDSLZVO)*-,7

(5) 查看pod、svc

[root@k8s-master1 examples]# kubectl get pod -o wide -n rook-ceph[root@k8s-master1 examples]# kubectl get svc -n rook-ceph

(6) 通过ceph-tool工具pod查看ceph集群状态

[root@k8s-master1 examples]# kubectl exec -it pod/rook-ceph-tools-6979f5784f-84jpw -n rook-ceph -- bash

4 通过Ceph Dashboard查看Ceph集群状态​​#​​

从svc状态中可以看到dashboard的svc类型为NodePort,对外暴露的端口为30493登录界面

(2) 集群状态UI

(3) 主机UI

(4) pool UI

5 测试​​#​​

(1) RBD测试

[root@k8s-master1 examples]# kubectl apply -f csi/rbd/storageclass.yaml # 创建一个名为replicapool的rbd pool[root@k8s-master1 examples]# kubectl get scNAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGErook-ceph-block rook-ceph.rbd.csi.ceph.com Delete Immediate true 12m[root@k8s-master1 examples]# kubectl apply -f mysql.yaml # 在default命名空间下[root@k8s-master1 examples]# kubectl apply -f wordpress.yaml # 在default命名空间下[root@k8s-master1 examples]# kubectl get pv,pvc -n default[root@k8s-master1 examples]# kubectl get pod,svc -n default

(2) CephFS测试

[root@k8s-master1 examples]# kubectl apply -f filesystem.yaml[root@k8s-master1 examples]# kubectl apply -f csi/cephfs/storageclass.yaml

6 总结​​#​​

通过rook复用k8s节点部署的ceph集群虽然部署方便,但是由于rook部署ceph时全程自动化且服务全部为pod导致后期维护ceph集群比较困难,我个人并不建议在生产环境中使用rook部署ceph集群,生产中应独立部署ceph集群比较方便维护。还有一点是,当你重启k8s节点后,该节点上osd对应的磁盘ceph集群会识别不到,这可能是一个bug吧,社区应该后期还会再改进。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:数据库的安全性
下一篇:docker-compose部署Atomci(云原生CICD平台)
相关文章