内容简介
本部分将介绍如何在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-operator的agent.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