容器云平台No.6~企业级分布式存储Ceph

简介

ceph作为一个统一的分布式存储系统,提供了高性能,高可用性,高扩展性。ceph的统一体现在其可以提供文件系统、块存储、对象存储,在云环境中,通常采用ceph作为后端存储来保证数据的高可用性。
ceph发表于2004年,随后开源给社区。进过十几年发展,目前得到众多云厂商支持并广泛使用。比如openstack\kubernetes\虚拟机系统等。。。
架构图:
在这里插入图片描述

特点

  • 高性能
    采用CRUSH算法,数据分布均衡,并行度高。
    容灾域的隔离,能够实现各类负载的副本放置规则,例如跨机房、机架感知等。
    能够支持上千个存储节点的规模,支持TB到PB级的数据。
  • 高可用性
    副本数可以灵活控制。
    支持故障域分隔,数据强一致性。
    多种故障场景自动进行修复自愈。
    没有单点故障,自动管理。
  • 高可扩展性
    去中心化。
    扩展灵活。
    随着节点增加而线性增长。
    支持三种存储接口:块存储、文件存储、对象存储
    支持自定义接口,支持多种语言驱动

部署方式

1、部署到裸机,作为独立的存储集群,为kubernetes提供存储服务(线上环境推荐)
2、部署到kubernetes集群之上,使用Rook管理ceph。Rook是一个可以提供Ceph集群管理能力的Operator,它使用CRD控制器来对ceph的资源进行部署和管理。相比部署到裸机。更接近kubernetes,但是属于一个新的东西,稳定性和故障处理难易程度有不确定性,生成环境需要自行评估。
3、作为测试,本文就采用rook来部署ceph集群。
先看下架构图

在这里插入图片描述

从以上两张官方给的图可以看出,
Rook Operator是核心组件,它主要用来其中存储集群,并监控存储守护进程,确保存储集群的健康。
Rook Agent运行到每一个存储节点,并配置了FlexVolume插件和Kubernetes 的存储卷控制框架(CSI)进行集成。
Rook 用 Kubernetes Pod 的形式,部署 Ceph的MON、OSD 以及 MGR守护进程。
4、部署ceph前,需要确保你的服务器有空闲的硬盘给ceph集群使用,一般是三块或者更多,如果只是测试最少一块。
如下所示,sdb就是给ceph用的

fdisk  -l

Disk /dev/sdb: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0001ce60

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   209715199   103808000   8e  Linux LVM

部署rook-ceph

安装root-operator,本文部署到命名空间:rook
1、部署common资源

[root@k8s-master001 rook]# kubectl  apply -f common.yaml 
namespace/rook created
Warning: apiextensions.k8s.io/v1beta1 CustomResourceDefinition is deprecated in v1.16+, unavailable in v1.22+; use apiextensions.k8s.io/v1 CustomResourceDefinition
。。中间省略N行
clusterrolebinding.rbac.authorization.k8s.io/rbd-csi-provisioner-role created

2、部署operator资源

[root@k8s-master001 rook]# kubectl label node k8s-master003 app.storage=rook-ceph
node/k8s-master003 labeled
[root@k8s-master001 rook]# kubectl label node k8s-master002 app.storage=rook-ceph
node/k8s-master002 labeled
[root@k8s-master001 rook]# kubectl label node k8s-master001 app.storage=rook-ceph
node/k8s-master001 labeled

[root@k8s-master001 rook]# kubectl  apply -f operator.yaml
configmap/rook-ceph-operator-config created
deployment.apps/rook-ceph-operator created

[root@k8s-master001 rook]# kubectl  get po -n rook
NAME                                 READY   STATUS    RESTARTS   AGE
rook-ceph-operator-87f875bbc-zz9lb   0/1     Pending   0          106s
再次查看,知道全部Pod为Running状态,表示安装成功
如果不是Runing状态,可以使用例如:kubectl describe po rook-discover-5qrc6 -n rook 查看详情
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值