存储概述
存储概览
Kubernetes容器存储接口(CSI)是CNCF推出的标准化存储插件框架,旨在将存储系统与Kubernetes解耦,使存储服务以插件形式接入集群,无需修改Kubernetes核心代码。CCE的容器存储功能基于该接口构建,深度融合块存储、文件存储、对象存储等多种云存储类型,全面支持无状态应用、有状态应用等典型场景。同时,该功能完全兼容Kubernetes原生存储体系,支持EmptyDir、HostPath、Secret、ConfigMap等多种存储形式。

CCE支持工作负载Pod绑定多种类型的存储:
- 从实现方式上划分,可以分为容器存储接口和Kubernetes原生存储。
类别
说明
CSI
是一种标准化插件机制(对应CCE的Everest插件),旨在解决传统in-tree存储插件与Kubernetes核心代码强耦合的问题,实现存储系统与编排平台的解耦。其核心设计是通过定义统一的gRPC接口规范,允许存储厂商以out-of-tree方式开发自定义存储插件,无需将插件源码嵌入Kubernetes源码仓库,从而实现存储功能的独立构建、编译和发布。用户只需通过PVC/PV声明存储需求,CSI驱动会自动将其转换为对应存储系统的操作指令,实现存储资源的动态供给与管理。
从Kubernetes 1.13开始,CSI已成为官方推荐的实现方式。
Kubernetes原生存储
采用in-tree模式,其存储插件代码直接嵌入Kubernetes核心代码仓库,与kubelet、kube-controller-manager等核心组件一同进行统一构建、编译和发布。由于插件迭代需随Kubernetes版本升级,导致其无法独立开发、升级或扩展,限制了对第三方存储系统的支持灵活性。
- 从存储介质上划分,可以分为云存储、本地存储和Kubernetes资源对象。
类别
说明
应用场景
云存储
由云服务商提供,可以通过网络将数据存储在远程集群中,实现集中管理和弹性扩展。在集群中,用户只需通过PVC/PV声明存储需求,CSI 插件便可自动对接云存储,无需手动配置底层资源。
一般用于存储可用性要求较高的数据,或部分数据需要共享的场景,例如日志保存、媒体资源存放等。
根据具体的使用场景,您可以选择合适的云存储类型,详情请参见云存储对比。
本地存储
存储介质为节点本地数据盘或内存,其中本地持久卷为CCE提供的自定义存储类型,通过容器存储接口以PVC/PV形式挂载,其余类型均为Kubernetes原生存储。
用于存储非高可用数据,可在IO要求较高、延迟低的场景下使用。
根据具体的使用场景,您可以选择合适的本地存储类型,详情请参见本地存储对比。
Kubernetes资源对象
ConfigMap和Secret是集群中创建的资源,属于比较特殊的存储类型,由Kubernetes API服务器上的tmpfs(基于RAM的文件系统)提供存储。
ConfigMap一般用于给Pod注入配置数据。
Secret一般用于给Pod传递敏感信息,例如密码。
云存储对比
对比维度 |
云硬盘EVS |
文件存储SFS |
极速文件存储SFS Turbo |
对象存储OBS |
专属存储DSS |
---|---|---|---|---|---|
概念 |
云硬盘(Elastic Volume Service)基于共享存储资源池,可以为云服务器提供高可靠、高性能、规格丰富并且可弹性扩展的块存储服务,兼具灵活性与高性价比。 |
SFS为用户提供一个完全托管的共享文件存储,能够弹性伸缩至PB规模,具备高可用性和持久性,为海量数据、高带宽型应用提供有力支持。适用于多种应用场景,包括HPC、媒体处理、文件共享、内容管理和Web服务等。 |
SFS Turbo为用户提供一个完全托管的共享文件存储,能够弹性伸缩至320TB规模,具备高可用性和持久性,为海量的小文件、低延迟高IOPS型应用提供有力支持。适用于多种应用场景,包括高性能网站、日志存储、压缩解压、DevOps、企业办公、容器应用等。 |
对象存储服务(Object Storage Service,OBS)提供海量、安全、高可靠、低成本的数据存储能力,可供用户存储任意类型和大小的数据。适合企业备份/归档、视频点播、视频监控等多种数据存储场景。 |
专属分布式存储服务(Dedicated Distributed Storage Service,DSS)可以提供独享的物理存储资源,适用于性能隔离和数据安全性要求更高的场景。 EVS与DSS的详细对比,请参见什么是专属分布式存储服务。 |
存储数据的逻辑 |
存放的是二进制数据,无法直接存放文件,如果需要存放文件,需要先格式化文件系统后使用。 |
存放的是文件,会以文件和文件夹的层次结构来整理和呈现数据。 |
存放的是文件,会以文件和文件夹的层次结构来整理和呈现数据。 |
存放的是对象,可以直接存放文件,文件会自动产生对应的系统元数据,用户也可以自定义文件的元数据。 |
存放的是二进制数据,无法直接存放文件,如果需要存放文件,需要先格式化文件系统后使用。 |
访问方式 |
只能在ECS/BMS中挂载使用,不能被操作系统应用直接访问,需要格式化成文件系统进行访问。 |
在ECS/BMS中通过网络协议挂载使用。需要指定网络地址进行访问,也可以将网络地址映射为本地目录后进行访问。 |
提供标准的文件访问协议NFS(仅支持NFSv3),用户可以将现有应用和工具与SFS Turbo无缝集成。 |
可以通过互联网或专线访问。需要指定桶地址进行访问,使用的是HTTP和HTTPS等传输协议。 |
只能在ECS/BMS中挂载使用,不能被操作系统应用直接访问,需要格式化成文件系统进行访问。 |
静态存储卷 |
支持,请参见通过静态存储卷使用已有云硬盘。 |
支持,请参见通过静态存储卷使用已有文件存储。 |
支持,请参见通过静态存储卷使用已有极速文件存储。 |
支持,请参见通过静态存储卷使用已有对象存储。 |
支持,请参见通过静态存储卷使用专属存储。 |
动态存储卷 |
支持,请参见通过动态存储卷使用云硬盘。 |
支持,请参见通过动态存储卷使用文件存储。 |
SFS Turbo子目录支持,请参见通过动态存储卷创建SFS Turbo子目录(推荐) |
支持,请参见通过动态存储卷使用对象存储。 |
支持,请参见通过动态存储卷使用专属存储。 |
主要特点 |
非共享存储,每个云盘只能在单个节点挂载。 |
共享存储,可提供高性能、高吞吐存储服务。 |
高性能、高带宽、共享存储。 |
共享存储,用户态文件系统。 |
非共享存储,每个云盘只能在单个节点挂载。 |
应用场景 |
HPC高性能计算、企业核心集群应用、企业应用系统和开发测试等。
说明:
高性能计算:主要是高速率、高IOPS的需求,用于作为高性能存储,比如工业设计、能源勘探等。 |
HPC高性能计算、媒体处理、内容管理和Web服务、大数据和分析应用程序等。
说明:
高性能计算:主要是高带宽的需求,用于共享文件存储,比如基因测序、图片渲染等。 |
高性能网站、日志存储、DevOps、企业办公等。 |
大数据分析、静态网站托管、在线视频点播、基因测序、智能视频监控、备份归档、企业云盘(网盘)等。 |
|
容量 |
TB级别 |
SFS 1.0:PB级别 通用文件系统(原SFS 3.0 容量型):EB级别 |
通用型:TB级别 |
EB级别 |
TB级别 |
时延 |
1~2ms |
SFS 1.0:3~20ms 通用文件系统(原SFS 3.0 容量型):10ms |
通用型:1~5ms |
10ms |
1~3ms |
最大IOPS |
因规格而异,范围为2.2K~256K |
SFS 1.0:2K 通用文件系统(原SFS 3.0 容量型):百万级 |
通用型:最大达100K |
千万级 |
因规格而异,范围为1.5K~8K |
带宽 |
MB/s级别 |
SFS 1.0:GB/s级别 通用文件系统(原SFS 3.0 容量型):TB/s级别 |
通用型:最大为GB/s级别 |
TB/s级别 |
MB/s级别 |
本地存储对比
对比维度 |
本地持久卷(Local PV) |
本地临时卷(Local Ephemeral Volume) |
临时路径(EmptyDir) |
主机路径(HostPath) |
---|---|---|---|---|
概念 |
将节点的本地数据盘通过LVM组成存储池(VolumeGroup),然后划分LV给容器挂载使用。 |
基于Kubernetes原生的EmptyDir类型,将节点的本地数据盘通过LVM组成存储池(VolumeGroup),然后划分LV作为EmptyDir的存储介质给容器挂载使用,相比原生EmptyDir默认的存储介质类型性能更好。 |
Kubernetes原生的EmptyDir类型,生命周期与容器实例相同,并支持指定内存作为存储介质。容器实例消亡时,EmptyDir会被删除,数据会永久丢失。 |
将容器所在宿主机的文件目录挂载到容器指定的挂载点中。 |
主要特点 |
低延迟、高IO,非高可用的持久卷。 存储卷通过Label绑定节点,且为非共享存储,只能在单个Pod中挂载。 |
本地临时卷,存储空间来自本地LV。 |
本地临时卷,存储空间来自本地的kubelet根目录或内存。 |
挂载主机节点文件系统上的文件或目录,支持自动创建主机目录,Pod可迁移(不绑定节点)。 |
存储卷挂载方式 |
不支持静态存储卷 |
详情请参见使用本地临时卷。 |
详情请参见使用临时路径。 |
详情请参见主机路径(HostPath)。 |
应用场景 |
IO要求高、应用自带高可用方案的场景,例如:高可用部署MySQL。 |
|
|
运行一个需要使用节点文件。例如容器中需使用Docker,可使用HostPath挂载节点的/var/lib/docker路径。
须知:
HostPath卷存在许多安全风险,最佳做法是尽可能避免使用HostPath。 当必须使用HostPath卷时,它的范围应仅限于所需的文件或目录,并以只读方式挂载。 |
企业项目支持说明

该功能需要everest插件升级到1.2.33及以上版本。
- 自动创建存储:
CCE支持使用存储类创建云硬盘和对象存储类型PVC时指定企业项目,将创建的存储资源(云硬盘和对象存储)归属于指定的企业项目下,企业项目可选为集群所属的企业项目或default企业项目。
若不指定企业项目,则创建的存储资源默认使用存储类StorageClass中指定的企业项目。- 对于自定义的StorageClass,可以在StorageClass中指定企业项目,详见控制台方式。StorageClass中如不指定的企业项目,则默认为default企业项目。
- 对于CCE提供的 csi-disk 和 csi-obs 存储类,所创建的存储资源属于default企业项目。
- 使用已有存储:
使用PV创建PVC时,因为存储资源在创建时已经指定了企业项目,如果PVC中指定企业项目,则务必确保在PVC和PV中指定的everest.io/enterprise-project-id保持一致,否则两者无法正常绑定。
相关文档
- 使用容器存储功能前,建议提前了解相关基础概念(如PV和PVC等),具体请参见存储基础知识。
- CCE通过Everest插件对接云存储服务,关于该插件的详细介绍请参见CCE容器存储(Everest)。
- CCE支持多种存储卷类型,具体如下:
- 关于容器存储的常见问题和解决方案,请参见存储管理。