在ACS集群中使用阿里云存储

ACS的容器存储功能基于Kubernetes容器存储接口(CSI),融合云盘、NAS、OSS等阿里云存储服务,并兼容Kubernetes原生的EmptyDir、ConfigMap等存储。本文主要介绍ACS支持的阿里云存储服务,包括各类存储服务的特点、应用场景、挂载方式等。

存储基础知识

Volume

容器中的文件在磁盘上是临时存放的,这给容器中运行的应用程序带来一些问题:

  • 当一个Pod同时运行多个容器时,无法在这些容器之间共享文件。

  • 当容器崩溃时,容器重建不会保留容器运行过程中产生的文件,这将导致文件丢失。

对于上述问题,Kubernetes抽象出了Volume(数据卷)来实现共享存储、持久化存储等能力。

  • Volume是Pod的一部分,只能在Pod中定义,不能独立创建。Pod中的所有容器都可以使用Volume,但需要将Volume挂载到容器中的目录下。

  • Volume是Pod与外部存储设备进行数据传递的通道,也是Pod内部容器之间、Pod与Pod之间、Pod与外部环境进行数据共享的方式。

  • Volume有多种类型,例如EmptyDir、ConfigMap、PersistentVolumeClaim(PVC)等。

更多信息,请参见Volume

PV与PVC

并非所有的Volume都具有持久化特性,为了实现持久化的存储,容器存储需依赖于一个远程存储服务,为此Kubernetes引入了PV和PVC两个资源对象,来定义和使用存储资源。

  • PV(PersistentVolume,存储卷)

    PV用于存储持久化数据,是一种抽象的存储卷,可以是网络存储、云存储等。PV可以由集群管理员提前创建,也可以通过SC(StorageClass,存储类)动态创建。PV独立于Pod存在,可以被多个Pod共享。

  • PVC(PersistentVolumeClaim,存储声明)

    PVC表达的是用户对存储的请求,它指定了Pod需要的PV的容量大小和访问模式。PVC与PV是一一对应关系,在Pod中使用Volume关联PVC,即可让Pod使用到存储资源。

更多信息,请参见Persistent VolumesStorage Classes

选择云存储

阿里云提供针对各种存储资源(块、文件和对象)的低成本、高可靠、高可用的存储服务,您可以根据业务负载的存储需求,考虑数据量、数据访问频率、IOPS和吞吐量等因素,选择合适的云存储服务。

云存储

特点

应用场景

选型参考

云盘

非共享、低时延、高可靠的数据块级随机存储。类似物理硬盘,支持分区格式化并建立文件系统。

  • 高IO、低延时场景

    云盘具有低时延、高性能等特点,适合对I/O、延迟要求较高的应用场景,例如:数据库、中间件等。

  • 非共享场景

    云盘为非共享存储,仅支持挂载到一个Pod上。

支持以下类型的云盘:

  • cloud_essd_entry:ESSD Entry云盘

  • cloud_auto:ESSD AutoPL云盘

  • cloud_essd(默认值):ESSD云盘

  • cloud_ssd:SSD云盘

  • cloud_efficiency:高效云盘

您可以结合云盘计费、性能等选择合适的云盘类型。更多信息,请参见块存储价格块存储性能

文件存储NAS

可共享访问、弹性扩展、高可靠、高性能的分布式文件系统。提供高吞吐和高IOPS的同时,支持文件的随机读写和在线修改。

  • 共享数据场景

    NAS为共享存储,支持多个Pod同时访问一份数据。NAS中的数据不会随Pod删除而清空,可用于Pod之间共享数据。

  • 大数据分析场景

    NAS提供了较高的数据吞吐能力,能满足大批量作业对共享存储访问的需求。

  • Web应用场景

    为Web应用、内容管理系统提供存储支撑。

  • 保存日志场景

    如果您希望将日志持久化存储,推荐使用NAS。

支持通用性NAS和极速型NAS。

您可以结合NAS费用、性能等选择合适的NAS类型和存储规格。更多信息,请参见通用型NAS极速型NAS选型指导

CPFS智算版(邀测)

面向智算业务,提供超高吞吐和IOPS,支持端到端RDMA网络。

  • AIGC、自动驾驶等智算场景

    CPFS智算版具有超高吞吐和IOPS,支持端到端RDMA网络,能满足智算业务的需求。

仅支持CPFS智算版。

CPFS智算版目前处于邀测中,目前仅部分地域和可用区支持。更多信息,请参见CPFS智算版

对象存储OSS

低成本的海量共享存储空间,适合存储写入后较少修改的数据。

  • 共享数据场景

    OSS为共享存储,支持多个Pod同时访问一份数据。OSS中的数据不会随Pod删除而清空,可用于Pod之间共享数据。

  • 网页、应用配置文件等只读场景

    ossfs网络性能欠佳,可以支撑一些小文件的读场景。

  • 图片、音视频等媒体文件只读场景

    OSS适合存储非结构化数据,如图片、音视频等。

您可以结合OSS计费、数据访问频率等选择合适的存储类型。更多信息,请参见选型指导存储类型概述

挂载云存储

存储插件

CSI是当前Kubernetes社区推荐的存储插件实现方案,ACS提供了managed-csiprovisioner作为ACS集群的CSI插件,支持基于阿里云存储资源的存储卷。

重要

在存储卷的挂载、卸载、创建、删除等操作上,CSI插件需要您授予其访问阿里云其他产品资源的权限。CSI插件使用RAM角色授权的方式申请创建AliyunCCCSIPluginRole角色,从而访问您在其他云产品中的资源。更多信息,请参见授权概述

挂载方式

通过PV描述阿里云存储资源(如云盘、NAS文件系统等),通过PVC绑定PV,然后在Pod的Volume中声明要使用的PVC,可以实现挂载云存储。根据云存储资源对应PV在创建方式上的差异,挂载云存储的方式可以分为以下两种:

  • 静态挂载

    根据已有的云存储资源创建PV(即静态存储卷),在PVC中直接绑定PV,以此可以实现静态挂载。该方式可以保证PV在容器启动前已经就绪,适用于已有存储资源的场景。

  • 动态挂载

    通过StorageClass定义要动态创建的云存储资源,在PVC中关联StorageClass,系统会根据PVC和StorageClass的配置,自动创建并绑定PV(即动态存储卷),以此可以实现动态挂载。该方式无需提前创建PV,更加灵活和自动化。

各类型存储卷的挂载操作参考如下:

云存储

静态挂载

动态挂载

云盘

暂不支持

动态挂载云盘存储卷

NAS

静态挂载NAS存储卷

动态挂载NAS存储卷

CPFS智算版

使用CPFS智算版静态存储卷

暂不支持

OSS

静态挂载OSS存储卷

暂不支持

说明

除持久化存储外,云盘也可以作为临时存储卷来存储临时数据。这类存储卷会随Pod一起创建和删除。具体操作,请参见挂载临时存储卷