K8s 持久化存储有几种方式?一文了解本地盘/CSI 外接存储/K8s 原生存储的优缺点

这篇具有很好参考价值的文章主要介绍了K8s 持久化存储有几种方式?一文了解本地盘/CSI 外接存储/K8s 原生存储的优缺点。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

K8s 持久化存储有几种方式?一文了解本地盘/CSI 外接存储/K8s 原生存储的优缺点,超融合,kubernetes,持久化存储

当今云原生环境中,Kubernetes(K8s)已成为既定的容器编排工具。随着 K8s 的普及,存储也成为 K8s 用户关注的一个重要问题:为了满足不同的场景需求,K8s 可以支持基于不同架构的多种存储方案。这些方案间有什么区别?用户应如何选择?本文将从架构角度出发,详细介绍本地磁盘、CSI 外接商用存储、K8s 原生存储 3 种 K8s 持久化存储方案,并在文末对比分析各个方案的能力与优劣势。

K8s 持久化存储有几种方式?一文了解本地盘/CSI 外接存储/K8s 原生存储的优缺点,超融合,kubernetes,持久化存储

本地磁盘

首先,K8s 支持用户直接将本地盘插到服务器上作为存储设备。由于磁盘和应用系统中间的 I/O 路径最短,本地磁盘可以提供最佳的性能。同时 RAID 提供了一定程度的可靠性的保证,可以避免因单个磁盘故障而导致的数据丢失。因此,目前有大量用户采用这种方式为有状态的应用提供存储服务。

但同时,本地磁盘方案也在可用性和扩容方面存在着巨大的缺陷:

  • 本地磁盘无法提供节点级别的高可用,当物理节点发生故障时,应用无法被恢复到其他节点。如果业务系统有节点级高可用的要求,则必须由业务系统自己实现数据层面的高可用,这极大地增加了业务系统的复杂度。
  • 本地磁盘也无法满足 K8s 环境下的业务敏捷性需求:业务使用的存储空间受限于本地磁盘的大小,达到磁盘空间的上限后,增加磁盘的操作步骤复杂,要想使用新增的硬盘空间,必须手工修改 Pod 中的配置,难以实现敏捷的平滑扩容。此外,要想对物理节点内的硬盘实现高可用,就需要部署 RAID,这也是相当费时、费力、费钱的方案,难以实现在短时间内为大量的应用系统配置足够的存储容量。

此外,该方案无论是部署还是故障后的修复,都需要大量人力的参与,这使得本地存储方案的运维成本大大提高。同时由于节点间的存储空间无法共享,也很容易造成存储空间的浪费。

总的来说,本地磁盘的方案只适合在业务容器化的初期阶段进行小规模试用,或者作为较低重要性的数据存储使用,难以在大规模生产场景下被广泛使用。

CSI 外接商用存储

为 K8s 提供持久化存储的另一种方式是通过容器存储接口(CSI)将 K8s 平台与底层存储基础设施连接起来,从而允许 K8s 动态调配和配置存储、实现存储操作自动化。国际分析机构 GigaOm 将这些外接存储方案进一步划分为商用存储(Enterprise Storage)和 K8s 原生存储(Kuernetes-Native Storage)两个类型。

商用存储既包括软件定义式存储(如分布式存储),也包括传统的集中式存储。与专为 K8s 环境而设计的 K8s 原生存储不同,商用存储通常情况下主要为裸金属和虚拟化环境服务,由于在企业中被广泛使用,通过 CSI 插件让商用存储获得容器存储支持能力,是非常方便且经济的选择。

然而,正因为商用存储在本质上更侧重虚拟化时代的功能特性,一些厂商推出的存储方案对云原生环境的支持能力仍有欠缺。另外值得注意的是,CNCF 认可的“云原生存储”不仅包含 K8s 原生存储,也包含基于不同架构的商用存储方案,产品间特性与性能差异较大,因此需要用户多加甄别。

外接集中式存储

K8s 集群外接集中式存储提供了可远程访问共享存储的能力。和本地磁盘的方案相比,集中式存储解决了应用系统高可用的问题,当业务 Pod 所在的服务器发生故障时,可以通过共享存储在其他节点上把应用拉起来,很多基于集中式存储的商用存储方案也提供快照、克隆、容灾等高级功能。此外,由于数据集中存储,也一定程度解决了本地存储对磁盘空间浪费的问题。

然而,传统集中式存储的架构(存储控制器加盘柜的形式)决定了它不能很好满足云原生高并发与敏捷性需求:

  • 尽管集中式存储可以为单个业务系统提供较高的性能保证,但是当面临大量业务并发访问时,存储控制器则成为了性能瓶颈。如果想要满足大量业务对性能需求,需要采用多套集中式存储系统,存储系统的管理成本也会急剧上升。
  • 有碍于盘柜形式,集中式存储扩展能力较差,运维工作量较大,也难以应对短时间内大量 Volume 的并发创建和销毁需求,缺少云原生敏捷性。

外接分布式存储

通过将数据分散存储在网络上的多台独立设备上,分布式存储具有优秀的横向扩展能力和敏捷性,在对接基于分布式计算架构的云原生应用时,性能和高可用方面也远优于集中式存储。Gartner 在《如何在容器与 Kubernetes 环境进行存储选型和实践》分析报告中也强调,云原生数据服务应该使用的存储必须“基于分布式架构,可以任意规模部署”。

不过,市面上可用于 K8s 的分布式存储方案鱼龙混杂,一些产品仅基于开源技术简单包装,其性能、稳定性以及对 K8s 环境的支持能力都难以达到生产级别的标准。建议用户关注具备自研技术的存储方案,并以“生产级”为标准全方位评估产品性能、可用性、可靠性、安全性和可维护性。

K8s 原生存储

K8s 原生存储是专为支持容器而构建的存储方案。这种存储与 K8s 的集成程度更深,具有容器级别的数据服务粒度和自动化存储资源运维能力,也因此能够为 K8s 上的容器应用提供灵活扩展能力与自动化运维能力。

更多关于 K8s 原生存储的特性与能力,请参考这篇内容:一文看懂 K8s 持久化存储、云原生存储、容器原生存储、K8s 原生存储有何区别。

目前,主流 K8s 原生存储主要有两种类型:开源产品(以 Rook(基于 Ceph)和 Longhorn 为代表)和闭源商用产品(以 Portworx 和 IOMesh 为代表)。这两种方案都能提供 K8s 原生的数据存储功能,也各有利弊:开源产品没有采购成本,具有技术实力的客户可以自行开发,具有社区支持,但若出现严重故障或漏洞,很难像商业厂商那样通过专业团队提供快速相应、深度解决问题的服务支持。另外,通过性能测试可以看出,目前基于自研闭源技术的 K8s 存储方案,在性能和稳定性方面要优于开源产品。欲了解测试详情,请阅读:主流 K8s 持久化存储方案特性与性能对比(Longhorn / Rook / OpenEBS / Portworx / IOMesh)。

总结:不同架构的 K8s 持久存储方案优劣势分析

基于以上分析,结合 K8s 支撑生产级核心应用系统的存储需求(以常见的数据服务为业务场景),我们通过下面的表格整理了各个存储方案在架构、性能、存储资源共享*、扩展性、高可用、安全性、运维难度、K8s 原生支持**等方面的能力,供读者参考。

K8s 持久化存储有几种方式?一文了解本地盘/CSI 外接存储/K8s 原生存储的优缺点,超融合,kubernetes,持久化存储

* 指支持有状态应用跨节点灵活调度、多 Pod 存储同时读写。
** 指与 K8s 紧密集成,可充分发挥 K8s 轻量化、自动化、标准化、敏捷等优势。

由此可见,K8s 原生存储对 K8s 环境有状态应用的支持能力,总体来说更具优势。目前,国内首款 K8s 原生的企业级分布式存储是志凌海纳 SmartX 推出的 IOMesh。IOMesh 以 SmartX 自主研发并经过生产环境验证的分布式块存储为核心,基于容器化部署模式,可无缝融入 K8s 原生的开发和运维体系,对 K8s 集群内的存储资源进行整合与管理,为运行在 K8s 集群上的各类有状态应用提供稳定、高性能的持久化存储资源。欲了解方案详情,您可阅读博客、观看产品解读视频,或点击获取《IOMesh 用户指南》。

参考文章:

1. Key Criteria for Evaluating Kubernetes Data Storage Solutions v4.0,GigaOm,2023
https://research.gigaom.com/report/key-criteria-for-evaluating-kubernetes-data-storage-solutions/

2. How Do I Approach Storage Selection and Implementation for Containers and Kubernetes Deployments,Gartner,2022
https://www.gartner.com/document/4013517文章来源地址https://www.toymoban.com/news/detail-687822.html

到了这里,关于K8s 持久化存储有几种方式?一文了解本地盘/CSI 外接存储/K8s 原生存储的优缺点的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【k8s存储--使用OpenEBS做持久化存储】

    使用OpenEBS,你可以将有持久化数据的容器,像对待其他普通容器一样来对待。OpenEBS本身也是通过容器来部署的,支持Kubernetes、Swarm、Mesos、Rancher编排调度,存储服务可以分派给每个pod、应用程序、集群或者容器级别,包括: 跨节点的数据持久化 跨可用区和云厂商的数据同步

    2024年04月23日
    浏览(35)
  • (九)K8S数据持久化高级存储

    NFS(Network File System)是一种分布式文件系统协议,用于通过网络共享文件和目录。它允许客户端计算机通过网络访问和读取远程服务器上的文件,就像它们在本地文件系统中一样。NFS 是一种常见的网络文件共享协议,在许多环境中被广泛使用。 在 Kubernetes 中,NFS 可以作为一

    2024年02月06日
    浏览(63)
  • K8S持久化存储--- PVC和PV的存储

    PersistentVolume ( PV )是群集中的一块存储,由管理员配置或使用存储类动态配置。 它是集群中的资源,就像 pod 是 k8s 集群资源一样。 PV是容量插件,如 Volumes ,其生命周期独立于使用 PV 的任何单个 pod 。 PersistentVolumeClaim ( PVC )是一个持久化存储卷,我们在创建 pod 时可以

    2023年04月10日
    浏览(48)
  • 飞天使-k8s基础组件分析-持久化存储

    emptyDir hostpath pv和pvc介绍 nfs作为静态pv案例 nfs作为动态pv案例 使用本地文件夹作为pv 改变默认存储类及回收策略 参考文档

    2024年02月11日
    浏览(43)
  • 如何借助Kafka持久化存储K8S事件数据?

    大家应该对 Kubernetes Events 并不陌生,特别是当你使用 kubectl describe 命令或 Event API 资源来了解集群中的故障时。     尽管这些信息十分有用,但它只是临时的,保留时间最长为30天。如果出于审计或是故障诊断等目的,你可能想要把这些信息保留得更久,比如保存在像 Kafka

    2024年02月05日
    浏览(47)
  • Kubernetes基础(二十三)-k8s持久化存储详解

    1.1 介绍 在容器中的磁盘文件是短暂的,当容器崩溃时,Kubelet会重新启动容器,但容器运行时产生的数据文件都将会丢失,之后容器会以最干净的状态启动。另外,当一个Pod运行多个容器时,各个容器可能需要共享一些文件,诸如此类的需求都可以使用Volume解决。Pod只需要通

    2024年03月17日
    浏览(47)
  • k8s篇-应用持久化存储(PV和PVC)

    一般来说,容器一旦被删除后,容器运行时内部产生的所有文件数据也会被清理掉,因此,Docker提供了 Volume 这种方式来将数据持久化存储。 可以说,Volume 是Pod与外部存储设备进行数据传递的通道,也是Pod内部容器间、Pod与Pod间、Pod与外部环境进行数据共享的方式。 实际上

    2023年04月08日
    浏览(41)
  • 第18关 K8s数据安全无忧——持久化存储详解

    ------ 课程视频同步分享在今日头条和B站 大家好,我是博哥爱运维,本期课程将深入解析Kubernetes的持久化存储机制,包括PV、PVC、StorageClass等的工作原理、使用场景、最佳实践等,帮您构建稳定可靠的状态存储,确保应用和数据 100% 安全。 Volume 我们这里先来聊聊K8s的存储模型V

    2024年02月05日
    浏览(46)
  • K8S使用持久化卷存储到NFS(NAS盘)

    参考文章:K8S-v1.20中使用PVC持久卷 - 知乎 目录 1、概念: 1.1 基础概念 1.2 PV的配置 1.2.1 静态PV配置 1.2.2 动态PV配置 1.2.3 PVC与PV的绑定 1.2.4 PVC及PV的使用 2 部署PV及PVC 2.1 所有K8S机器都需要安装NFS程序 2.2 仅针对需要暴露文件服务的机器开启NFS服务         2.2.1 Linux为例开启NFS服

    2023年04月26日
    浏览(53)
  • k8s通过nfs-provisioner配置持久化存储

    一、nfs-client-provisioner简介 Kubernetes集群中NFS类型的存储没有内置 Provisioner。但是你可以在集群中为NFS配置外部Provisioner。 Nfs-client-provisioner是一个开源的NFS 外部Provisioner,利用NFS Server为Kubernetes集群提供持久化存储,并且支持动态购买PV。但是nfs-client-provisioner本身不提供NFS,需

    2024年02月11日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包