全部产品
Search
文档中心

容器服务 Kubernetes 版 ACK:存储概述

更新时间:Feb 28, 2026

Kubernetes应用通常需要持久化存储来保存数据。ACK通过标准的容器存储接口CSI,集成了多种阿里云存储服务(如云盘、OSS、NAS、CPFS等),并兼容Kubernetes原生存储机制,为不同业务场景提供存储解决方案。

存储方案选型

ACK的存储方案分为两类:

  • Kubernetes原生存储卷:用于临时数据、配置管理或与节点的交互。生命周期通常与Pod绑定,不适用于需要持久化保存应用数据的场景。

  • 阿里云持久化存储卷:通过CSI组件集成,为工作负载提供稳定、可靠的数据持久化能力。生命周期独立于Pod,可用于有状态应用。

image
使用容器存储功能前,确保已了解相关概念,如存储卷、PV、PVC等,详见存储基础知识

Kubernetes 原生存储卷

Kubernetes原生存储卷的生命周期通常与Pod绑定,不适用于需要持久化保存应用数据的场景。

类型

说明

核心特点

emptyDir

与Pod生命周期相同的临时空目录。

Pod删除后数据即丢失。可用于Pod内容器间数据交换或临时缓存。

HostPath

将节点宿主机上的文件或目录挂载到Pod中。可通过 type 字段(如 DirectoryOrCreate)控制挂载前的检查和创建行为。

详见HostPath数据卷

数据与节点绑定,不随Pod迁移。不适用于需要高可用和持久化存储的有状态应用(如数据库、缓存)。

ConfigMap/Secret

以文件形式挂载配置项或敏感凭据。

仅用于存储小体积配置数据,非业务数据。用于将配置与应用解耦。

阿里云持久化存储卷

对于需要持久化存储数据的有状态应用,应选择由阿里云存储服务提供的持久化存储卷。这些存储卷的生命周期独立于Pod,通过CSI实现与Kubernetes的集成。

方案对比

为便于快速选型,表格中各存储方案的标题下方提供了部分核心属性的快速索引。以云盘为例:

  • image云盘:方案详细说明。单击可查看详情。

  • 静态/动态:方案支持的存储卷挂载方式,包括静态存储卷(PV/PVC)和动态存储卷(StorageClass/PVC)。单击可查看具体操作文档。

  • RWO:方案支持的存储卷访问模式accessModes),包括RWO(ReadWriteOnce)、RWX(ReadWriteMany)、ROX(ReadOnlyMany)。

  • 计费:方案计费说明。单击可查看详情。

存储方案

说明

权衡与限制

image云盘

静态/动态 | RWO(未启用多重挂载) | 计费

  • 说明:提供高数据可靠性(9个9)和稳定I/O性能的块存储服务,数据在后端采用三副本机制。支持文件系统(volumeMode: Filesystem)及块设备模式(volumeMode: Block),并提供多种性能规格(ESSD AutoPL、ESSD云盘、ESSD Entry等)和静态加密能力。

  • 场景:适用于数据库(MySQL/PostgreSQL)、中间件(Redis/ES)等对I/O性能和数据可靠性要求高的单实例有状态应用。

  • accessModes限制:未开启多重挂载的云盘同一时间只能被单个Pod挂载,无法原生满足多实例共享数据的业务需求(如Web集群内容共享)。

    推荐用于StatefulSet或单Pod,不推荐用于多副本Deployment,详见操作文档。
  • 可用区绑定:除ESSD同城冗余云盘外,其他云盘类型只能挂载到同一可用区下的Pod。

    建议使用WaitForFirstConsumer模式的StorageClass,实现拓扑感知调度。
  • 规格匹配:云盘类型与ECS实例规格存在匹配关系,详见实例规格族

imageNAS

静态/动态 | RWX、RWO、ROX | 计费

  • 说明:支持NFS协议的共享文件存储,支持多Pod并发读写,容量和性能可弹性伸缩。提供回收站、快照、备份等数据保护能力。

  • 场景:Web集群内容共享、CI/CD流水线、日志集中存储、以及其他需要多应用实例并发读写同一份数据的场景。

  • 网络I/O开销:读写均通过网络进行,相比云盘会引入额外的毫秒级延迟,不推荐用于数据库等对I/O延迟极其敏感的应用。

  • “邻居噪声”:在subpath和 sharepath 的共享实例模式下,动态供应的PV是后端同一个NAS的子目录,共享性能(带宽、IOPS)可能引发“邻居噪声”。

  • 协议与网络限制:仅支持NFS协议,且不支持跨VPC挂载。

imageOSS

静态ossfs 1.0/ossfs 2.0

动态ossfs 1.0/ossfs 2.0

RWX、ROX | 计费

  • 说明:海量、低成本的对象存储服务。通过ossfs工具可将Bucket模拟成文件系统挂载到Pod中,单位存储成本低。提供ossfs 1.0(注重POSIX兼容性)和ossfs 2.0(为高吞吐、大并发场景优化)两种挂载方式。

  • 场景:AI/大数据分析的数据湖、网站图片/视频等静态媒体资源存储、应用数据备份与归档。

  • 性能非原生:基于用户态文件系统(FUSE)实现,文件系统操作需转换为HTTP API调用,导致高延迟和低随机I/O性能,不推荐用于数据库或高频写入场景。

  • POSIX兼容性不完整:无法完整支持所有标准文件系统操作,如对根路径执行chmodchown受限,可能引发应用兼容性问题。

imageCPFS 智算版

静态/动态 | RWX | 计费

  • 说明:专为AI与智算领域打造的超高性能并行文件系统,提供高并发吞吐和IOPS性能。

  • 场景:AIGC大模型训练/推理、自动驾驶仿真等对并行I/O性能要求高的AI智算领域。

  • 成本与可用性:成本较高,面向特定高性能场景。处于邀测阶段且仅在部分地域可用。

  • 挂载限制:不支持跨VPC挂载。

imageCPFS 通用版

静态 | RWX | 计费

  • 说明:面向高性能计算(HPC)场景的共享文件系统,提供高于通用NAS的IOPS和吞吐带宽。

  • 场景:基因计算、大数据分析、数据缓存加速等传统HPC领域。

  • 成本与可用性:成本高于通用NAS,且仅在部分地域可用。

  • 挂载限制:仅支持NFS协议,且不支持跨VPC挂载。

除基础性能外,不同存储方案在故障恢复、容量管理和数据保护等运维场景中也存在差异,可从以下几个问题进一步规划选型。

Pod所在节点故障时,应用和数据如何恢复?

当Pod所在节点发生故障时,应用能否快速恢复、数据是否安全,是高可用架构的核心。

  • 云盘:CSI会自动将云盘从旧节点卸载,并挂载到新节点。

  • NAS / OSS / CPFS:共享存储,Pod 在新节点启动后可立即重新挂载,无需等待存储卷“漂移”。恢复速度仅取决于应用本身的启动时间。

  • HostPath:数据固定在特定节点上。如果该节点故障,Pod 将无法在其他节点上启动并访问原有数据。依赖应用自身实现跨节点的数据复制和高可用。

选型建议:如果应用(如单实例数据库)可容忍分钟级中断,可选择云盘。如需实现快速故障切换(如高可用 Web 服务),建议优先使用共享存储并部署多副本。如果应用自身处理数据复制和高可用,可选择本地盘以获得极致性能。

如何规划和管理应用的存储容量?

合理的容量规划能有效控制成本,并防止因存储耗尽导致服务中断。不同存储类型的 PVC 容量声明对实际存储用量的约束效果存在差异。

  • 云盘:PVC 声明的容量与实际分配的云盘容量一一对应,容量限制可实际生效,且支持在线扩容。适合容量需求明确、需要严格资源隔离的场景。

  • OSS:本身无实际容量上限,按实际用量计费。PVC 容量仅用于匹配PV,不限制实际存储用量。

  • NAS / CPFS:

    • 静态卷:PVC 容量仅用于匹配PV,不对实际存储用量产生限制;实际可用容量取决于后端实例的总容量上限,所有 Pod 共享。

    • 动态卷:NAS(仅subpath方式且allowVolumeExpansiontrue)及CPFS智算版场景下,PVC 容量将转换为对应目录的配额,限制实际容量;其他场景下行为与静态卷一致。

选型建议:对容量有精确预算和强隔离需求的应用(如多租户环境下的数据库)推荐使用云盘。大量 Pod 共享数据、容量动态变化的场景(如日志、Web 静态文件)推荐使用共享存储。

如何备份应用数据,防止误删或损坏?

  • 云盘:通过快照实现,可对整个数据卷进行秒级创建和快速恢复,也可创建备份计划或立即备份,降低数据丢失风险。

  • NAS:提供回收站(通过CNFS,支持恢复单个文件或目录)和快照(部分NAS类型支持)。

  • OSS:提供版本控制生命周期管理能力,以防止误操作,或进行数据归档。

  • HostPath:数据保护依赖应用层的高可用和复制机制。

选型建议:需要对整个数据卷进行快速、一致性备份恢复时推荐选择云盘快照。需要长期归档、合规审计或恢复单个文件的场景,推荐使用 NAS或OSS提供的相应功能。使用HostPath则必须确保应用层有完善的数据保护策略。

关键组件与概念

  • CSI组件(csi-plugin、csi-provisioner)

    Kubernetes社区推荐的存储插件实现方案,已在集群中默认部署。负责与阿里云存储服务的API进行交互,实现存储卷的自动创建、挂载、卸载等全生命周期管理。详见管理CSI组件

  • 容器网络文件系统 (CNFS)

    ACK托管集群Pro版提供的存储增强功能,将NAS、OSS、CPFS等抽象为Kubernetes CRD对象,提供更精细化的管理能力,如子目录动态创建、配额管理、IO性能监控、回收站、分布式缓存等。详见容器网络文件系统CNFS

使用说明

使用CSI时需注意以下使用限制。

  • 集群版本:需为1.14及以上。如需升级,请参见手动升级集群

  • 集群环境:已在ACK集群中完成全面适配和验证。对于非ACK集群(非阿里环境集群、阿里云自建集群),由于配置、权限、网络等环境差异,CSI无法保证开箱即用。

    建议参见alibaba-cloud-csi-driver源码并结合自身环境进行适配。
  • 节点配置:kubelet运行参数--enable-controller-attach-detachtrue

  • 操作系统:不支持Windows节点。

  • RBAC权限:PV是集群级别的资源,PVC是命名空间级别的资源。进行RBAC授权时,需注意不同角色对这两类资源的权限差异。

    如果ACK默认提供的预置角色(管理员、运维人员等)无法满足需求,请配置自定义权限。例如,ACK默认的运维人员角色对PVC有读写权限,但对PV仅有只读权限,因此无法手动创建PV。详见使用RBAC为集群内资源操作授权

FAQ

如何判断集群使用的存储插件模式?

可选择以下方式查看。

通过控制台查看节点注释

  1. ACK集群列表页面,单击目标集群名称,在集群详情页左侧导航栏,选择节点管理 > 节点

  2. 在节点列表的操作列,单击详情,在基本信息页签下查看节点注释

    若存在volumes.kubernetes.io/controller-managed-attach-detach: true,表示存储插件为CSI;若不存在,则为Flexvolume。

通过命令查看kubelet参数

登录节点,查看kubelet参数。

ps -ef | grep kubelet

预期输出:

--enable-controller-attach-detach=true
  • true:存储插件为CSI。

  • false:存储插件为Flexvolume。

如何手动为CSI授权?

CSI在执行存储卷的挂载、卸载、创建、删除等操作时,需要被授予访问其他产品资源的相应权限。通常情况下,集群已默认安装CSI且配置相关权限。如需手动授权,可参见以下内容。

  • 使用RAM角色授权(默认):CSI使用AliyunCSManagedCsiRole角色来访问其他云产品资源,详见容器服务ACK服务角色

    • ACK托管集群:CSI使用的RAM角色权限的Token被保存在名为addon.csi.token的Secret中。可挂载该Secret,从而实现RAM角色授权。

    • ACK专有集群:CSI继承其Pod所在节点的RAM角色。

    关于如何为RAM角色授权,请参见管理RAM角色的权限

  • 使用AccessKey授权

    • 通过环境变量:将AccessKey创建为Kubernetes Secret,再通过环境变量的方式注入到CSI的Pod中,避免在部署模板中明文暴露密钥。

    • 直接写入YAML:直接在CSI的YAML中写入AccessKey信息。不推荐在生产环境使用。

附录