Kubernetes 本质上与基础设施无关,因为它依赖于插件和抽象卷来将存储硬件与应用程序和服务分离。另一方面,当用户终止容器时,数据就会立即丢失。Kubernetes 使用卷和持久卷将容器化应用程序创建和处理的数据保存在物理存储设备上。这些抽象通过各种类型的硬件抽象层 (HAL)实现连接到存储硬件 。Kubernetes 集群用两种常用 HAL 存储实现 容器附加存储 (CAS)和 软件设计存储 (SDS)。
本博客,将深入探讨了 CAS 和 SDS 的根本区别、各自的优势以及典型 HAL 存储实现的最合适应用。
容器附加存储与软件定义存储
Kubernetes 采用抽象存储来实现可移植、高可用和分布式存储。Kubernetes API 支持通过 CSI 接口连接各种 CAS 和 SDS 存储解决方案。那么,先让我们仔细研究抽象模型的功能以及每个模型在 Kubernetes 集群中解决存储的目的。
容器附加存储
容器附加存储 (CAS)引入了一种为 Kubernetes 集群中有状态工作负载持久保存数据的新方法。使用 CAS,存储控制器作为 Kubernetes 集群的一部分在容器中进行管理和运行。由于这些控制器可以在任何 Kubernetes 平台上运行,无论是在个人机器、本地数据中心还是公有云产品上,这就允许存储的可移植性。由于 CAS 利用微服务架构,存储解决方案与绑定到物理存储设备的应用程序保持密切关联,从而减少了 I/O 时间。
容器附加存储架构
CAS 利用 Kubernetes 环境来实现集群数据的持久性。存储解决方案在容器中运行存储目标。这些 目标是可以复制以进行独立扩展和管理的微服务。为了增强自主性和敏捷性,这些基于微服务的 存储目标可以使用像 Kubernetes 这样的平台进行编排。
CAS 集群使用控制平面层 进行存储管理,而数据平面层 用于运行存储目标/工作负载。控制平面中的存储控制器提供卷、启动存储目标副本并执行其他管理相关任务。数据平面组件执行来自控制平面元素的存储策略和指令。这些指令通常包括文件路径、存储和访问方法。数据平面还包含存储引擎 ,负责实现文件存储的实际输入输出路径。
容器附加存储的好处
Container Attached Storage 为有状态的容器化应用程序提供了敏捷存储。这是因为它遵循基于微服务的模式,允许无缝升级存储控制器和目标副本。存储软件的容器化意味着管理团队可以为每个卷动态分配和更新存储策略。对于 CAS,低级存储资源使用 Kubernetes 自定义资源表示定义。这允许存储和云原生工具之间的无缝集成,从而实现更轻松的管理和监控。CAS 还确保存储与供应商无任何关联,因为有状态的工作负载可以从一个 Kubernetes 部署环境移动到另一个,而不会中断服务。
容器附加存储应用
CAS使用存储目标复制来保证高可用,避免传统分布式存储架构的爆炸半径限制。这使得 CAS 成为云原生应用程序的首选存储选择。CAS 也适用于希望在多个云中协调存储的企业。这是因为 CAS 可以部署在任何 Kubernetes 平台上。Container Attached Storage 支持简单的存储备份和复制,非常适合需要横向扩展存储的应用程序。当然,它也非常适合希望改善持续集成和开发 (CI/CD) 管道的读写时间的开发团队。
Kubernetes 的流行 CAS 解决方案提供商包括:
1)OpenEBS
2)StorageOS
3)Portworx
4)Longhorn
软件定义存储
软件定义存储架构依靠数据程序将运行的应用程序与存储硬件分离。通过将存储设备抽象为虚拟分区来简化存储设备的管理,然后在承载命令和控制功能的数据管理接口 (DMI)上启用管理。
软件定义存储的特点
借助软件定义存储,数据/服务管理界面托管在控制由共享存储池组成的存储层的主服务器上。这使得存储的配置和分配变得简单而灵活。以下是软件定义存储的一些主要功能:
设备抽象 - 无论底层硬件如何,数据 I/O 服务都应该统一交付给用户。通过 SDS,存储抽象结构(例如存储库、文件共享、卷和逻辑单元号 (LUN))用于在数据存储的物理硬件和逻辑方面之间创建清晰的划分。
自动化 - SDS 解决方案实施的工作流程和算法可减少管理员执行的手动工作量。为了实现高效的自动化,SDS 存储系统可以适应几乎不需要人工干预的不同性能和数据需求。
分解的池化存储 - 物理存储设备是共享工具的一部分,软件可以从中为服务和应用程序开辟存储空间。这允许 SDS 在需要时有效地使用可用存储,从而实现资源的最佳使用。
软件定义存储的优势
使用 SDS 的一些好处包括:
增强的可扩展性 - 解耦硬件资源允许管理员根据工作负载动态分配物理存储。SDS 支持的池化、分解存储允许物理卷的垂直和水平扩展,支持更大的容量和更高的性能。
改进的 I/O 性能 - SDS 支持 输入-输出并行性,以跨多个 CPU 动态处理主机请求。SDS 还支持高达 8TB 的大缓存内存,同时支持自动数据分层。这允许更快的输入-输出操作以更快的数据处理。
互操作性 - SDS 使用数据管理接口作为转换器,允许在不同平台上运行的存储解决方案相互交互。它还将物理隔离的存储硬件分组到逻辑池中,允许组织托管来自不同供应商的共享存储。
降低成本 - SDS 存储解决方案通常在现有商品硬件上运行,同时优化存储消耗。SDS 还支持自动化,从而减少管理存储基础架构所需的管理员数量。这些因素导致管理工作负载的前期和运营费用降低。
何时使用软件定义存储
SDS 为希望以更低的成本提高存储灵活性的团队提供了多种好处。SDS 的一些常见用例包括:
数据中心基础设施现代化
为移动和具有挑战性的环境创建强大的系统
创建要在同一平台上管理的混合云实施
利用现有的远程和分支机构基础设施
容器附加存储与软件定义存储的比较
相似之处:
CAS 和 SDS 都支持物理存储硬件和正在运行的应用程序之间的隔离。在这样做的同时,这两种技术都从数据存储资源中抽象了数据管理。这两个 HAL 实现共享几个共同的功能,包括:
供应商不可知
CAS 和 SDS 架构都允许在单个主机上运行多个工作负载。这允许管理员利用存储设备和访问软件之间的分离。因此,无论是谁开发或管理工具,组织都可以选择 CAS 或 SDS 来实施可在任何平台上运行的存储解决方案。
允许动态存储分配
SDS 和 CAS 允许动态连接和分离存储工具,从而为高可用性应用程序自动提供数据备份和副本。SDS 和 CAS 都允许自动部署存储基础设施,从而实现存储技术的多样性和异构性。
允许有效的基础设施扩展
CAS 和 SDS 允许横向和纵向基础设施扩展以自动化数据工作流。这两种 HAL 方法支持创建可组合的分解基础架构,从而增强多功能分布式环境的创建。
CAS和SDS的差异
SDS 支持分布式存储管理并减少硬件依赖性,而 CAS 允许使用任何容器编排平台运行的分解存储。因此 CAS 和 SDS 之间的各种差异,包括:
软件定义存储依赖于传统共享软件,具有爆炸半径的限制,而容器附加存储 (CAS) 允许存储软件的复制,允许独立管理和扩展。
CAS 允许扩展/横向扩展存储和卷性能,而 SDS 允许扩展存储节点以提高存储容量。
SDS 支持超融合基础架构 (HCI),而 CAS 支持高度分解的存储基础架构。
容器附加存储和软件定义存储都允许集群管理员利用硬件抽象的优势为 Kubernetes 中的有状态应用程序持久化数据。CAS 允许使用 Kubernetes 进行基于微服务的存储编排,从而实现对存储控制器的灵活管理。另一方面,软件定义存储允许使用可编程数据控制平面抽象存储硬件。
CAS 具有典型 SDS 提供的所有功能,尽管是为容器工作负载量身定制的,但仍然是使用最新的软件和硬件进行构建。
原文Container Attached Storage (CAS) vs. Software-Defined Storage - Which One to Choose?
【51CTO译稿,合作站点转载请注明原文译者和出处为51CTO.com】