使用 Rook 快速搭建 Ceph 集群

栏目: IT技术 · 发布时间: 6年前

内容简介:Rook 是一个开源的云原生存储编排工具,提供平台、框架和对各种存储解决方案的支持,以和云原生环境进行本地集成。Rook 将存储软件转变成自我管理、自我扩展和自我修复的存储服务,通过自动化部署、启动、配置、供应、扩展、升级、迁移、灾难恢复、监控和资源管理来实现。Rook 底层使用云原生容器管理、调度和编排平台提供的能力来提供这些功能。

Rook 是一个开源的云原生存储编排工具,提供平台、框架和对各种存储解决方案的支持,以和云原生环境进行本地集成。

使用 Rook 快速搭建 Ceph 集群

Rook 将存储软件转变成自我管理、自我扩展和自我修复的存储服务,通过自动化部署、启动、配置、供应、扩展、升级、迁移、灾难恢复、监控和资源管理来实现。Rook 底层使用云原生容器管理、调度和编排平台提供的能力来提供这些功能。

Rook 利用扩展功能将其深度集成到云原生环境中,并为调度、生命周期管理、资源管理、安全性、监控等提供了无缝的体验。有关 Rook 更多的详细信息,可以参考 Rook 仓库 (https://github.com/rook/rook/blob/master/README.md#project-status) 的项目介绍。目前 Rook 已经很好地提供了对 Ceph 的支持,本文简单为大家介绍如何使用 Rook 来快速搭建 Ceph 集群。

Ceph 是一种高度可扩展的分布式存储解决方案,用于具有多年生产部署的块存储、对象存储和共享文件系统。

本文试验环境:

  • Kubernetes: v1.16.2

  • Docker:18.09.9

  • Rook:release-1.1

部署 Rook Operator

本文笔者将部署 release-1.1 版本的 Rook,点击查看部署使用的 部署清单文件 ( https://github.com/rook/rook/blob/release-1.1/cluster/examples/kubernetes/ceph )。

从上面链接中下载 common.yaml 与 operator.yaml 两个资源清单文件:

在继续操作之前,验证 rook-ceph-operator 是否处于 Running 状态:

创建 Rook Ceph 集群

现在 Rook Operator 处于 Running 状态,接下来我们就可以创建 Ceph 集群了。为了使集群在重启后不受影响,请确保设置的 dataDirHostPath 属性值为有效得主机路径。更多相关设置,可以查看 集群配置相关文档 ( https://rook.io/docs/rook/v1.1/ceph-cluster-crd.html )。

创建如下的资源清单文件:(cluster.yaml)

然后直接创建即可:

接着通过 kubectl 来查看 rook-ceph 命名空间下面的 Pod 状态,出现类似于如下的输出信息,说明已经全部运行成功了:

OSD Pod 的数量将取决于集群中的节点数量以及配置的设备和目录的数量。如果用上面我们的资源清单,则每个节点将创建一个 OSD。rook-ceph-agent 和 rook-discover 是否存在也是依赖于配置的。

Rook 工具箱

要验证集群是否处于正常状态,我们可以使用 Rook 工具箱 ( https://rook.io/docs/rook/v1.1/ceph-toolbox.html ) 来运行 ceph status 命令查看。

Rook 工具箱是一个用于调试和测试 Rook 的常用 工具 容器,该工具基于 CentOS 镜像,所以可以使用 yum 来轻松安装更多的工具包。

这里用 Deployment 控制器来部署 Rook 工具箱,部署的资源清单文件如下所示:(toolbox.yaml)

然后直接运行这个 rook-ceph-tools pod:

一旦 toolbox 的 Pod 运行成功后,我们就可以使用下面的命令进入到工具箱内部进行操作:

工具箱中的所有可用工具命令均已准备就绪,可满足故障排除需求。例如:

比如现在我们要查看集群的状态,需要满足下面的条件才认为是健康的:

  • 所有 mons 应该达到法定数量

  • mgr 应该是激活状态

  • 至少有一个 OSD 处于激活状态

  • 如果不是 HEALTH_OK 状态,则应该查看告警或者错误信息

如果群集运行不正常,可以查看 Ceph 常见问题 ( https://rook.io/docs/rook/v1.1/ceph-common-issues.html )以了解更多详细信息和可能的解决方案。

存储

对于 Rook 暴露的三种存储类型可以查看对应的文档:

  • 块存储  ( https://rook.io/docs/rook/v1.1/ceph-block.html )

    创建一个 Pod 使用的块存储

  • 对象存储  ( https://rook.io/docs/rook/v1.1/ceph-object.html )

    创建一个在 Kubernetes 集群内部和外部都可以访问的对象存储

  • 共享文件系统  ( https://rook.io/docs/rook/v1.1/ceph-filesystem.html )

    创建要在多个 Pod 之间共享的文件系统

Ceph Dashboard

Ceph 有一个 Dashboard 工具,我们可以在上面查看集群的状态,包括总体运行状态,mgr、osd 和其他 Ceph 进程的状态,查看池和 PG 状态,以及显示守护进程的日志等等。

我们可以在上面的 cluster CRD 对象中开启 dashboard,设置 dashboard.enable=true  即可,这样 Rook Operator 就会启用 ceph-mgr dashboard 模块,并将创建一个 Kubernetes Service 来暴露该服务,将启用端口 7000 进行 https 访问,如果 Ceph 集群部署成功了,我们可以使用下面的命令来查看 Dashboard 的 Service:

这里的 rook-ceph-mgr 服务用于报告 Prometheus metrics 指标数据的,而后面的的 rook-ceph-mgr-dashboard 服务就是 Dashboard 服务,如果在集群内部可以通过 DNS 名称 http://rook-ceph-mgr-dashboard.rook-ceph:7000 或者 CluterIP http://10.109.8.98:7000 来进行访问,但是如果要在集群外部进行访问的话,我们就需要通过 Ingress 或者 NodePort 类型的 Service 来暴露了,为了方便测试我们这里创建一个新的 NodePort 类型的服务来访问 Dashboard,资源清单如下所示:(dashboard-external.yaml)

同样直接创建即可:

创建完成后我们可以查看到新创建的 rook-ceph-mgr-dashboard-external 这个 Service 服务:

通过 http://<NodeIp>:32381 就可以访问到 Dashboard 了。

使用 Rook 快速搭建 Ceph 集群

但是在访问的时候需要我们登录才能够访问,Rook 创建了一个默认的用户 admin,并在运行 Rook 的命名空间中生成了一个名为 rook-ceph-dashboard-admin-password 的 Secret,要获取密码,可以运行以下命令:

用上面获得的密码和用户名 admin 就可以登录 Dashboard 了,在 Dashboard 上面可以查看到整个集群的状态:

使用 Rook 快速搭建 Ceph 集群

配置 Dashboard

除此之外在使用上面的 CRD 创建 ceph 集群的时候我们还可以通过如下的配置来配置 Dashboard:

  • urlPrefix

    如果通过反向代理访问 Dashboard,则可能希望在 URL 前缀下来访问,要让 Dashboard 使用包含前缀的的链接,可以设置  urlPrefix

  • port

    可以使用端口设置将为 Dashboard 提供服务的端口从默认值修改为其他端口,K8S 服务暴露的端口也会相应的更新

  • ssl

    通过设置  ssl=false ,可以在不使用 SSL 的情况下为 Dashboard 提供服务

监控

每个 Rook 群集都有一些内置的指标 collectors/exporters,用于使用 Prometheus 进行监控。要了解如何为 Rook 群集设置监控,可以按照 监控指南 ( https://rook.io/docs/rook/v1.1/ceph-monitoring.html )中的步骤进行操作。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Practical Vim, Second Edition

Practical Vim, Second Edition

Drew Neil / The Pragmatic Bookshelf / 2015-10-31 / USD 29.00

Vim is a fast and efficient text editor that will make you a faster and more efficient developer. It’s available on almost every OS, and if you master the techniques in this book, you’ll never need an......一起来看看 《Practical Vim, Second Edition》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

URL 编码/解码
URL 编码/解码

URL 编码/解码