本文主要是介绍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来解决的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!