内容简介:Rook 是一个开源的云原生存储编排工具,提供平台、框架和对各种存储解决方案的支持,以和云原生环境进行本地集成。Rook 将存储软件转变成自我管理、自我扩展和自我修复的存储服务,通过自动化部署、启动、配置、供应、扩展、升级、迁移、灾难恢复、监控和资源管理来实现。Rook 底层使用云原生容器管理、调度和编排平台提供的能力来提供这些功能。
Rook 是一个开源的云原生存储编排工具,提供平台、框架和对各种存储解决方案的支持,以和云原生环境进行本地集成。
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 创建了一个默认的用户 admin,并在运行 Rook 的命名空间中生成了一个名为 rook-ceph-dashboard-admin-password
的 Secret,要获取密码,可以运行以下命令:
用上面获得的密码和用户名 admin 就可以登录 Dashboard 了,在 Dashboard 上面可以查看到整个集群的状态:
配置 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 )中的步骤进行操作。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Elasticsearch 集群搭建和集群原理
- Zookeeper学习系列【二】Zookeeper 集群章节之集群搭建
- Spark集群环境搭建
- Zookeeper搭建集群
- FastDFS集群搭建
- Zookeeper集群环境搭建
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。