微信小程序群发功能代码实现详细分析
2023
2022-11-07
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/
(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小时内删除侵权内容。