在 Kubernetes 中,PersistentVolumeClaims(PVC)和 StorageClasses 协同工作,管理存储的供应和工作负载对存储的访问方式。两个关键概念是 访问模式 和 卷模式。本文探讨这些概念,并重点介绍不同存储系统对它们的支持情况。
访问模式定义了卷如何被挂载和被 pod 使用。主要的访问模式包括:
| 存储类 | 支持 RWO | 支持 ROX | 支持 RWX |
|---|---|---|---|
| CephFS File Storage | 是 | 否 | 是 |
| CephRBD Block Storage | 是 | 否 | 否 |
| TopoLVM | 是 | 否 | 否 |
| NFS Shared Storage | 是 | 否 | 是 |
如上所示,基于文件的存储系统如 CephFS 和 NFS 支持多节点的并发写入或读取操作,适合共享访问场景。另一方面,基于块的存储系统如 CephRBD 和 TopoLVM 则提供对单个节点的独占访问。
卷模式定义了数据如何暴露给 pod:
| 存储类 | 类型 | 支持的卷模式 |
|---|---|---|
| CephFS File Storage | 文件存储 | Filesystem |
| CephRBD Block Storage | 块存储 | Filesystem, Block |
| TopoLVM | 块存储 | Filesystem, Block |
| NFS Shared Storage | 文件存储 | Filesystem |
基于块的存储系统如 CephRBD 和 TopoLVM 同时支持文件系统和原始块访问,满足不同应用需求的灵活性。相比之下,文件存储系统如 CephFS 和 NFS 仅支持文件系统模式。
Kubernetes 还支持高级功能,如卷快照和 PVC 的动态扩容,具体取决于所使用的存储类。
| 存储类 | 卷快照 | 扩容 |
|---|---|---|
| CephFS File Storage | 支持 | 支持 |
| CephRBD Block Storage | 支持 | 支持 |
| TopoLVM | 支持 | 支持 |
| NFS Shared Storage | 不支持 | 不支持 |
只有使用 StorageClass 动态供应的 PVC 才支持卷快照。此功能对于备份和克隆环境非常有用。
在 Kubernetes 中配置存储时,理解 PVC 的 访问模式 和 卷模式 以及其背后的 StorageClasses 对于为工作负载选择合适的解决方案至关重要。文件存储解决方案如 CephFS 和 NFS 适合共享访问场景,而块存储如 CephRBD 和 TopoLVM 则在高性能单节点部署中表现出色。此外,快照和扩容等功能的支持能够极大地增强存储的灵活性和数据管理策略。