Cloud Native Storage #
存储是应用的持久数据存放的地方,通常被称为持久卷(persistent volume)。为了可靠地运行,应用需要能够轻松访问存储。一般来说,当我们提到持久数据时,我们指的是存储诸如数据库、消息或任何我们希望在应用重启时不会丢失的信息
解决的问题 #
云原生架构是流动的、灵活的和弹性的,这使得在重启之间保持数据的持久性变得具有挑战性。为了实现横向扩展、纵向扩展或自我修复,容器化应用会持续创建和删除,并随着时间的推移改变物理位置。这就是为什么云原生存储必须以节点无关的方式提供的原因。然而,要存储数据,你仍然需要硬件,具体来说是磁盘,而磁盘和其他硬件一样,都是受基础设施约束的——这是我们面临的第一个大挑战。
接下来是实际的存储接口,它在不同的数据中心之间可能有显著变化(在传统环境中,每个基础设施都有自己的存储解决方案和接口),这使得可移植性变得非常困难。
最后,手动供应和自动扩展是互不兼容的,因此,为了从云的弹性中受益,存储必须自动供应。
云原生存储是专为这种新的云原生现实量身打造的。
提供的帮助 #
此类别中的工具可以帮助:
- 为容器提供云原生存储选项,
- 标准化容器与存储提供者之间的接口
- 或通过备份和恢复操作提供数据保护
前者指的是使用云原生兼容的容器存储接口(第二类工具)的存储,并且可以自动供应,通过消除人为瓶颈,支持自动扩展和自我修复。
技术基础 #
云原生存储的实现很大程度上得益于容器存储接口(CSI),它为容器文件和块存储提供了标准化的 API。在这一领域,有许多工具(包括开源工具和供应商提供的工具)利用 CSI 实现容器的按需存储服务。
与此同时,还有一些技术旨在解决其他云原生存储的挑战。例如,Minio 是一个广受欢迎的项目,它提供兼容 S3 的 API,用于对象存储,并支持其他云原生存储特性。而像 Velero 这样的工具,则简化了备份和恢复 Kubernetes 集群以及应用程序所使用持久化数据的流程。
Keywords #
- Persistent volume 持久化卷
- CSI 容器存储接口
- Storage API 存储
- Backup and restore 备份与恢复