ceph集群和数据库到底是储存数据_「Kubernetes系列」 K8S 中通过Rook部署Ceph集群(一)

6b3fb75532d46fc758b83071ed006225.png

介绍

在本文中,您将使用Rook在Kubernetes集群中部署Ceph存储。然后,您将使用Ceph的块存储来持久存储MongoDB数据库的数据。
完成后,您将了解:

  • 什么是Rook以及如何使用它来部署Ceph。
  • 如何使用Rook在Kubernetes中部署其他一些存储后端。

前置要求

  • 一个具有4个节点的Kubernetes集群:1个主节点和3个工作节点。每个节点都是具有至少4GB RAM的Ubuntu 18.04服务器。在本教程中,我们在DigitalOcean上使用官方kubeadm工具创建的集群。主节点命名为master,工作节点命名为node-01,node-02和node-03。

步骤一:创建块卷存储

在此步骤中,我们将创建3个块卷并将每个块卷附加到一个工作程序节点。这些卷将在以后用于持久存储Ceph集群的数据。

首先,我们进入DigitalOcean控制面板的“卷”菜单,然后单击“添加卷”按钮。

2f2c6b4bb3044fa2db0665dd80b0bf10.png
  • 首先卷大小30G
  • 命名:vol-01、vol-02、vol-03
ba08a7b03f695b0e794acac86f98729b.png

最后,我们单击创建卷按钮创建每个卷。

一旦三个卷创建好后并且挂载到相应的节点上。我们会看到如下的类似映射。

db5909c63fc67d591bd732ed4f5d5c34.png

现在我们配置好了存储基础设施。

步骤二:部署Rook Operator

Rook是[Cloud Native Computing Foundation(CNCF)](https://cncf.io)的一个孵化项目。它专门用于存储编排,并允许在Kubernetes集群中直接部署多个存储解决方案。在本文中,我们将重点介绍Ceph存储,但是还可以使用其他存储解决方案。

注意:Ceph和EdgeFS当前是Rook处于“稳定”状态所支持的2个存储服务商。其他存储(如Cassandra,Minio,NFS,CockroachDB,YugabyteDB)处于Alpha状态

下面我们Git克隆并使用1.2 版本。

$ git clone https://github.com/rook/rook.git$ cd rook$ git checkout release-1.2

对于Rook支持的每个存储解决方案,都有一个Kubernetes Operator。简而言之,Operator是一个在Pod中运行的过程,其中包含管理复杂应用程序的所有逻辑。Operator通常用于管理有状态的应用程序。

下面我们进入克隆下来的目录中,并部署Rook operator 所需的resources。

$ cd cluster/examples/kubernetes/ceph$ kubectl create -f common.yaml

这些资源主要是CustomRessourceDefinitions,也称为CRD。它们用于定义将由Operator使用的新资源(Kubernetes中默认不存在的资源)。创建的其他资源主要为了访问权限,这样Operator可以与集群的API服务器进行通信:

ServiceAccountRoleRoleBindingClusterRoleClusterRoleBinding

接下来,我们部署Ceph Operator,该Operator将负责Ceph集群的配置和编排。

等待几秒钟后,Operator就会启动并运行了。可以通过下面的命令查看状态:

$ kubectl get pod -n rook-ceph

一旦Operator 准备好后。它就会触发创建DaemonSet用于在每个节点上部署rook-discover agent。

所有都安装好后。可以看到所有资源的部署状态如下:

NAME READY STATUS RESTARTS AGErook-ceph-operator-75d95cb868-s7m5z 1/1 Running 0 78srook-discover-44dq9 1/1 Running 0 43srook-discover-7gxn7 1/1 Running 0 43srook-discover-xfqmk 1/1 Running 0 43s

这些都完成后,就万事俱备只欠东风了。

步骤三:创建Ceph 集群

下面我们可以在K8S中正式创建Ceph集群了。

390f65af77cc74ad1694806db976370a.png
  • mgr是Manager守护程序,负责跟踪运行时指标和Ceph集群的当前状态。对于高可用性群集,至少需要2个Ceph管理器
  • mon是一个Monitor,负责维护Ceph守护程序相互协调所需的集群状态映射。对于高可用性群集,至少需要三个监视器
  • osd是一个对象存储守护程序,负责存储数据,处理数据复制,恢复,重新平衡。对于HA Ceph集群,至少需要3个Ceph OSD

首先,我们先定义一个CephCluster的资源:

apiVersion: ceph.rook.io/v1kind: CephClustermetadata:  name: rook-ceph  namespace: rook-cephspec:  cephVersion:    image: ceph/ceph:v14.2  allowUnsupported: false  dataDirHostPath: /var/lib/rook  skipUpgradeChecks: false  mon:    count: 3    allowMultiplePerNode: false  dashboard:    enabled: true    ssl: true  monitoring:    enabled: false    rulesNamespace: rook-ceph  network:    hostNetwork: false  rbdMirroring:    workers: 0  storage:    useAllNodes: true    useAllDevices: true

它基本上定义了集群的配置方式。属性useAllNodes和useAllDevices设置为true,以便Kubernetes集群的每个工作节点将用于部署Ceph的进程,并且附加到这些节点的所有设备将用于持久存储Ceph集群的数据。

下面我们来创建:

$ kubectl apply -f cluster.yaml

CephCluster资源的创建将通知Ceph Operator,并将向API服务器发送请求,以创建所有与Ceph相关的Pod。

接下来,我们确保负责Ceph集群的所有Pod都已启动并正在运行。

$ kubectl get pod -n rook-ceph

创建集群通常需要几分钟。完成此操作后,我们将获得类似于以下输出的列表。

NAME READY STATUS RESTARTS AGEcsi-cephfsplugin-fnpm9                        3/3 Running 0 10mcsi-cephfsplugin-hxml9                        3/3 Running 0 10mcsi-cephfsplugin-provisioner-7c44c4ff49-k8z9t 4/4 Running 0 10mcsi-cephfsplugin-provisioner-7c44c4ff49-kmdp9 4/4 Running 1 10mcsi-cephfsplugin-qwm6m                        3/3 Running 0 10mcsi-rbdplugin-dgmv8                           3/3 Running 0 10mcsi-rbdplugin-provisioner-7458d98547-xg7x8    5/5 Running 1 10mcsi-rbdplugin-provisioner-7458d98547-xz2kg    5/5 Running 1 10mcsi-rbdplugin-qxx26                           3/3 Running 0 10mcsi-rbdplugin-s2mxj                           3/3 Running 0 10mrook-ceph-mgr-a-5d8bf85bb7-nnnxc              1/1 Running 0 7m5srook-ceph-mon-a-7678858484–5txtz              1/1 Running 0 8mrook-ceph-mon-b-6b6f697f94–577z8              1/1 Running 0 7m44srook-ceph-mon-c-89c78d866–4w5sb               1/1 Running 0 7m25srook-ceph-operator-75d95cb868-s7m5z           1/1 Running 0 13mrook-ceph-osd-prepare-node-01-dj9tm           0/1 Completed 0 6m33srook-ceph-osd-prepare-node-02–49d5c           0/1 Completed 0 6m33srook-ceph-osd-prepare-node-03-md22x           0/1 Completed 0 6m33srook-discover-44dq9                           1/1 Running 0 12mrook-discover-7gxn7                           1/1 Running 0 12mrook-discover-xfqmk                           1/1 Running 0 12m

Ceph 可以提供多种存储类型:

filesystemobjectblock

下一节,我们将创建使用块(block)存储所需的资源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值