Kubernetes 持久化存储的难题,Rook来解决

目录

前言:

Ceph

什么是Rook?

Rook 包含的组件:

在 Kubernetes 上部署 Rook主要步骤


前言:

作为最热门云原生技术,Kubernetes 使用越来越广泛, Kubernetes最小单元是Pod,但Pod是不断创建和销毁的,一般来讲,它们的生命周期是短暂的。

持久化存储是保存容器存储数据的重要手段,存储插件会在容器里挂载一个基于网络或者其他机制的远程数据卷,使得在容器里创建的文件实际是挂载到指定的持久化存储卷,从而访问到数据卷里保存的内容。

Kubernetes 在许多方面具备强大的能力,例如可伸缩性、可移植性和管理能力,但它不支持存储状态。在生产系统里,不少Pod都是有状态的,即需要某种外部存储。

CNCF版图列出了云原生存储解决方案:

目前已有不少开源项目致力于解决云原生架构上的存储问题,其中较为常见的是Ceph和Rook,本文将重点讲解Rook。

Ceph

Ceph是一个可靠、自动均衡、自动恢复的分布式存储系统,通常可用于对象存储,块设备存储和文件系统存储。

Ceph在存储的时候充分利用存储节点的计算能力,在存储每一个数据时都会通过计算得出该数据的位置,尽量的分布均衡。

以下为Ceph架构图:

什么是Rook?

Rook 是 Kubernetes 的开源云原生存储协调器,为不同的存储解决方案提供平台、框架和支持,以便与云原生环境自然整合。

Rook 将存储软件变成自我管理、自我扩展和自我修复的存储服务。它通过自动部署、启动、配置、配置、扩展、升级、迁移、灾难恢复、监控和资源管理来实现。Rook 使用底层云原生容器管理、调度和编排平台提供的设施来履行其职责。

Rook 深度整合到云原生环境中,利用扩展点,为调度、生命周期管理、资源管理、安全、监控和用户体验提供无缝体验。

Rook 由 Cloud Native Computing Foundation(CNCF)托管,是一个毕业项目。

Rook 使用 Kubernetes 使 Ceph 存储系统能够在 Kubernetes 上运行,下图说明了 Ceph Rook 如何与 Kubernetes 集成:

随着 Rook 在 Kubernetes 集群中运行,Kubernetes 应用程序可以挂载由 Rook 管理的块设备和文件系统,或者可以使用 S3 / Swift API 提供对象存储。Rook oprerator 自动配置存储组件并监控群集,以确保存储处于可用和健康状态。

Rook oprerator 是一个简单的容器,具有引导和监视存储集群所需的全部功能。oprerator 将启动并监控 ceph monitor pods 和 OSDs 的守护进程,它提供基本的 RADOS 存储。oprerator 通过初始化运行服务所需的 pod 和其他组件来管理池,对象存储(S3 / Swift)和文件系统的 CRD。

prerator 将监视存储后台驻留程序以确保群集正常运行。Ceph mons 将在必要时启动或故障转移,并在群集增长或缩小时进行其他调整。oprerator 还将监视 api 服务请求的所需状态更改并应用更改。

Rook oprerator 还创建了 Rook agent。这些 agent 是在每个 Kubernetes 节点上部署的 pod。每个 agent 都配置一个 Flexvolume 插件,该插件与 Kubernetes 的 volume controller 集成在一起,处理节点上所需的所有存储操作,例如附加网络存储设备,安装卷和格式化文件系统。

Rook 包含的组件:

Rook Operator:Rook Operator是Rook框架的核心。Operator是一个自定义的Kubernetes控制器,它使用CR(Custom Resource)来管理应用程序及其组件。

Kubernetes controller监视您的集群资源的状态,并尝试将当前集群状态移至所需状态。每个controller负责特定资源,并由协调循环实现。创建,更新或删除受监视资源时,将触发操作更新

Rook Agent:在每个存储节点上运行,并配置一个 FlexVolume 插件,和 Kubernetes 的存储卷控制框架进行集成。Agent 处理所有的存储操作,例如挂接网络存储设备、在主机上加载存储卷以及格式化文件系统等。

Rook Discovers:检测挂接到存储节点上的存储设备。

Rook 还会用 Kubernetes Pod 的形式,部署 Ceph 的 MON、OSD 以及 MGR 守护进程。

Rook Cluster:提供了对存储机群的配置能力,用来提供块存储、对象存储以及共享文件系统。每个集群都有多个 Pool。

Pool:为块存储提供支持。Pool 也是给文件和对象存储提供内部支持。

Object Store:用 S3 兼容接口开放存储服务。

File System:为多个 Kubernetes Pod 提供共享存储。

在 Kubernetes 上部署 Rook主要步骤

1、部署Rook Operator

2、创建Rook Cluster

3、配置ceph dashboard

4、部署Ceph toolbox

5、rook部署块存储

6、rook部署对象存储

7、rook部署文件存储

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值