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

2023-11-23 01:59

本文主要是介绍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部署文件存储

这篇关于Kubernetes 持久化存储的难题,Rook来解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/414505

相关文章

MyBatis-plus处理存储json数据过程

《MyBatis-plus处理存储json数据过程》文章介绍MyBatis-Plus3.4.21处理对象与集合的差异:对象可用内置Handler配合autoResultMap,集合需自定义处理器继承F... 目录1、如果是对象2、如果需要转换的是List集合总结对象和集合分两种情况处理,目前我用的MP的版本

504 Gateway Timeout网关超时的根源及完美解决方法

《504GatewayTimeout网关超时的根源及完美解决方法》在日常开发和运维过程中,504GatewayTimeout错误是常见的网络问题之一,尤其是在使用反向代理(如Nginx)或... 目录引言为什么会出现 504 错误?1. 探索 504 Gateway Timeout 错误的根源 1.1 后端

解决升级JDK报错:module java.base does not“opens java.lang.reflect“to unnamed module问题

《解决升级JDK报错:modulejava.basedoesnot“opensjava.lang.reflect“tounnamedmodule问题》SpringBoot启动错误源于Jav... 目录问题描述原因分析解决方案总结问题描述启动sprintboot时报以下错误原因分析编程异js常是由Ja

深度剖析SpringBoot日志性能提升的原因与解决

《深度剖析SpringBoot日志性能提升的原因与解决》日志记录本该是辅助工具,却为何成了性能瓶颈,SpringBoot如何用代码彻底破解日志导致的高延迟问题,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言第一章:日志性能陷阱的底层原理1.1 日志级别的“双刃剑”效应1.2 同步日志的“吞吐量杀手”

MySQL 表空却 ibd 文件过大的问题及解决方法

《MySQL表空却ibd文件过大的问题及解决方法》本文给大家介绍MySQL表空却ibd文件过大的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考... 目录一、问题背景:表空却 “吃满” 磁盘的怪事二、问题复现:一步步编程还原异常场景1. 准备测试源表与数据

解决Nginx启动报错Job for nginx.service failed because the control process exited with error code问题

《解决Nginx启动报错Jobfornginx.servicefailedbecausethecontrolprocessexitedwitherrorcode问题》Nginx启... 目录一、报错如下二、解决原因三、解决方式总结一、报错如下Job for nginx.service failed bec

SysMain服务可以关吗? 解决SysMain服务导致的高CPU使用率问题

《SysMain服务可以关吗?解决SysMain服务导致的高CPU使用率问题》SysMain服务是超级预读取,该服务会记录您打开应用程序的模式,并预先将它们加载到内存中以节省时间,但它可能占用大量... 在使用电脑的过程中,CPU使用率居高不下是许多用户都遇到过的问题,其中名为SysMain的服务往往是罪魁

使用SpringBoot+InfluxDB实现高效数据存储与查询

《使用SpringBoot+InfluxDB实现高效数据存储与查询》InfluxDB是一个开源的时间序列数据库,特别适合处理带有时间戳的监控数据、指标数据等,下面详细介绍如何在SpringBoot项目... 目录1、项目介绍2、 InfluxDB 介绍3、Spring Boot 配置 InfluxDB4、I

MySQ中出现幻读问题的解决过程

《MySQ中出现幻读问题的解决过程》文章解析MySQLInnoDB通过MVCC与间隙锁机制在可重复读隔离级别下解决幻读,确保事务一致性,同时指出性能影响及乐观锁等替代方案,帮助开发者优化数据库应用... 目录一、幻读的准确定义与核心特征幻读 vs 不可重复读二、mysql隔离级别深度解析各隔离级别的实现差异

Java报错:org.springframework.beans.factory.BeanCreationException的五种解决方法

《Java报错:org.springframework.beans.factory.BeanCreationException的五种解决方法》本文解析Spring框架中BeanCreationExce... 目录引言一、问题描述1.1 报错示例假设我们有一个简单的Java类,代表一个用户信息的实体类:然后,