天天看点

Rook-Ceph 分布式存储系统快速部署Rook-Ceph 分布式存储系统快速 部署StorageCeph Dashboard,面板Tools,客户端工具Monitoring,状态监测结束

Rook-Ceph 分布式存储系统快速 部署

This guide will walk you through the basic setup of a Ceph cluster and enable you to consume block, object, and file storage from other pods running in your cluster.

版本要求

Rook支持的Kubernetes 要求版本高于 v1.7。

预先检查

确保 Kubernetes 集群可以用于

Rook

, 跟着这个检查

follow these instructions

.

如果使用

dataDirHostPath

来持久化 rook 到 kubernetes 的宿主机,确保 host 至少有 5GB 以上空间可用,而且是指定的目录下。

开始

如果幸运的话,Rook cluster 可以通过下面的kubectl commands来创建。更多细节,参考

deploy the Rook operator

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

集群运行后,就可以创建

block, object, or file

存储,从而可以被集群中其它的应用所使用。

部署Rook Operator

这是部署Rook system components,的第一步,包括一个Rook agent运行于每一个节点上,作为Rook operator pod,缺省部署在rook-ceph-system命名空间中。

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

# verify the rook-ceph-operator, rook-ceph-agent, and rook-discover pods are in the `Running` state before proceeding
kubectl -n rook-ceph-system get pod
           

该operator可以通过

Rook Helm Chart

来进行部署。

重启Kubelet,(K8S 1.7.x only)

对于Kubernetes 1.8之前的版本, Kubelet 进程在所有的节点上都要进行重启,在部署Rook operator 和 Rook agents之后。作为初始化 setup的一部分, Rook agents 部署和配置了Flexvolume plugin ,以此与 Kubernetes’ volume controller框架整合。在 Kubernetes v1.8+, 其

dynamic Flexvolume plugin discovery

将会发现和初始化Rook的plugin, 但在 Kubernetes的老版本上,手工重启Kubelet被要求。

创建Rook Cluster

现在Rook operator, agent,和 discover pods已经运行,我们可以创建 Rook cluster。为了重启之后还能复活集群,请确定设置了

dataDirHostPath

属性。更多的设置,参考

configuring the cluster

保存下面的参数为

cluster.yaml

:

apiVersion: v1 kind: Namespace metadata:
 name: rook-ceph
---
apiVersion: ceph.rook.io/v1beta1 kind: Cluster metadata:
 name: rook-ceph
 namespace: rook-ceph
spec:
 dataDirHostPath: /var/lib/rook
 dashboard:
 enabled: true
 storage:
 useAllNodes: true
 useAllDevices: false
 config:
 databaseSizeMB: "1024"
 journalSizeMB: "1024"            

创建cluster:

kubectl create -f cluster.yaml
           

使用

kubectl

列出rook命名空间下的 pods 。其中,osd pods 的数量依赖于集群中节点的数量、配置的设备和目录的数量。

$ kubectl -n rook-ceph get pod
NAME READY STATUS RESTARTS AGE
rook-ceph-mgr-a-75cc4ccbf4-t8qtx 1/1 Running 0 24m
rook-ceph-mon0-72vx7 1/1 Running 0 25m
rook-ceph-mon1-rrpm6 1/1 Running 0 24m
rook-ceph-mon2-zff9r 1/1 Running 0 24m
rook-ceph-osd-id-0-5fd8cb9747-dvlsb 1/1 Running 0 23m
rook-ceph-osd-id-1-84dc695b48-r5mhf 1/1 Running 0 23m
rook-ceph-osd-id-2-558878cd84-cnp67 1/1 Running 0 23m
rook-ceph-osd-prepare-minikube-wq4f5 0/1 Completed 0 24m
           

Storage

了解Rook提供的三种不同存储类型,查看指南:

  • Block : 创建块存储供pod使用,相当于创建一块硬盘,然后可以被pod挂载到操作系统。
  • Object : 创建object store可以供 Kubernetes cluster 内部或外部使用,是一种类似于Amazon S3的网络存储服务。
  • Shared File System : 创建一个文件系统,可以在多个 pods 间共享。

Ceph Dashboard,面板

Ceph 有一个dashboard服务,依赖于mgr的指标收集。可以查看集群的状态,参见

dashboard guide

。也可以通过安装集成的Prometheus和Grafana来查看运行状态。

  • Dashboard目前(0.8)还会遇到一些问题,参见

Tools,客户端工具

我们创建了一个toolbox container,里面包含全功能的Ceph clients命令行工具,可以用于调试和诊断Rook集群的状态和错误。 查看

toolbox readme

获得安装和用法的信息。同时,查看

advanced configuration

文档查看维护和调优的例子。

Monitoring,状态监测

每一个 Rook cluster 都有内置的 metrics collectors/exporters用于

Prometheus

的监测。了解如何设置 monitoring,请查看

monitoring guide

结束

测试完集群后,查看

these instructions

可以将其清除。

本文转自开源中国-

Rook-Ceph 分布式存储系统快速部署