「Rook-Ceph」- 集群环境搭建

  CREATED BY JENKINSBOT

内容简介

本部分将介绍如何在Kubernetes集群上部署Rook服务、底层使用Ceph存储。

注意事项

正如官方文档,本文也只是”基础设置“,也只是”快速开始“,更多的技术细节及部署方法请参考官方文档。

注意,本文只用于参考,概览在部署集群时需要进行的工作。

系统环境

该表是我在部署Rook时的一些环境信息:

系统环境: CentOS Linux release 7.4.1708 (Core)
软件版本: Kubernetes v1.12.1
Rook: release-1.0

(有些时候,有些问题,有些特性,恰巧就在你所使用的版本之后……)

环境要求

在安装Rook之前,集群需要满足一些条件,详细参考官方「Prerequisites」文档。这里简单整理:

# 最小版本:需要是Kubernetes v1.10或者以上版本。

# 权限与RBAC:为了管理集群中的存储,需要赋予Rook权限。查看「Using Rook with Pod Security Policies」中的细节来设置“在启动了Pod安全策略的集群中的”Rook。

# 配置FlexVolume:这是关键步骤之一,Rook Agent需要设置为Flex Volume插件来管理集群中的存储附加。请参阅「release-1.0/Flex Volume Configuration」来配置Kubernetes部署以加载Rook卷插件。(这是Rook能否成功的关键,因为我的集群是1.12版本,因此只能使用FlexVolume挂载,而1.13开始,应该使用CSI驱动挂载)

# 内核RBD模块:Rook Ceph需要使用RBD模块,所以需要加载RBD模块。(配置方法略过)

# 内核模块目录:默认的内核模块在/lib/modules目录中。如果某些发行版使用了不同的目录,需要通过LIB_MODULES_DIR_PATH环境变量,或者helm-operatoragent.libModulesDirPath进行设置。(通常不会遇到这个问题,毕竟我们通常使用CentOS发行版)

# 额外Agent目录:在某些特定的发行版中,有必要向Agent中挂载主机目录。可以使用AGENT_MOUNTS环境变量或者helm-operator中的agent.mounts变量。(目前我还没遇到这方面的需求)

# 安装LVM包:需要在所有存储节点上安装LVM包。

# 带认证的镜像仓库:如果镜像仓库带有认证,需要修改对应的ServiceAccount对象。(由于目前没有这方面的需求,因此跳过)

# 数据持久化:由于Rook Cluster需要持久化一些数据,所以如果你使用dataDirHostPath将数据保存在kubernetes主机上,那么需要确保主机在指定路径上至少有5GB的可用空间。

测试环境部署

执行下面几条命令及应用YAML文件(注意,以下命令只能用于测试环境):

第一步、准备工作目录

#!/bin/sh

git clone https://github.com/rook/rook.git
git checkout tags/release-1.0 -v release-1.0
cd cluster/examples/kubernetes/ceph

第二步、部署Agent与Operator组件

########################################################################################################################
#
########################################################################################################################
# 有关Operator的部署可以参考文档:https://github.com/rook/rook/blob/release-1.0/Documentation/ceph-examples.md
kubectl create -f common.yaml
kubectl create -f operator.yaml

# 验证rook-ceph-operator, rook-ceph-agent, rook-discover这几个Pod出于运行状态。
kubectl -n rook-ceph get pod

第三步、创建Ceph集群

########################################################################################################################
# 创建集群
########################################################################################################################
# 确保上一步中的所有Pod出于运行状态
# 集群配置可以参考文档:https://github.com/rook/rook/blob/release-1.0/Documentation/ceph-cluster-crd.md
kubectl create -f cluster-test.yaml

# 检查集群是否创建成功
# 检查OSD Pod的数量,它取决与节点、设备、已配置目录的数量。
kubectl -n rook-ceph get pod

第四步、查看集群状态

########################################################################################################################
# 检查集群的健康状况
########################################################################################################################
# 使用Rook toolbox查看集群的健康信息
# https://github.com/rook/rook/blob/release-1.0/Documentation/ceph-toolbox.md

生产环境部署

对于生产环境,需要向节点中添加额外的存储设备。

在测试环境部署中,放宽对本地存储设备的要求,以便可以快速建立群集,并作为“测试”环境来运行,以对Rook进行试验。这在目录中创建“Ceph文件存储OSD”,而不需要设备。

对于生产环境,需要遵循cluster.yaml中的示例,而不是cluster-test.yaml文件,以便配置设备,而不是测试目录。有关更多详细信息,请参见「Ceph Examples」示例。

参考文献

GitHub/rook/rook/Documentation/k8s-pre-reqs.md
Ceph Storage Quickstart
master/FlexVolume Configuration