本文介绍使用容器服务Kubernetes版挂载NAS文件系统的方式,您可以使用Flexvolume存储插件和CSI存储插件或使用容器网络文件系统CNFS挂载NAS文件系统,也可以通过Windows容器挂载NAS文件系统。

重要 请使用以下推荐的方式挂载NAS文件系统。使用其他方式挂载NAS文件系统可能出现稳定性风险,NAS团队无法预估该风险且由于该风险引起的一切损失和后果均由您自行承担。

容器服务存储插件说明

阿里云容器服务Kubernetes版提供CSI和Flexvolume存储插件。由于CSI插件在容器生态中表现出更加优秀的管理能力,Flexvolume插件已经逐步弃用。容器网络文件系统CNFS则是阿里云容器服务利用CSI插件抽象出的新的容器存储管理方式,与传统CSI使用模式保持兼容。我们推荐您在使用阿里云容器服务时使用CNFS来管理和访问NAS存储卷,从而获得明显的性能提升和强大的管理能力和I/O可观测性。

说明
  • 如果您的容器集群规模较小,很少进行弹性伸缩,且主要用于测试目的,您也可以使用HostPath方式使用NAS。更多信息,请参见HostPath数据卷
  • 如果是自建Kubernetes集群,对于大规模弹性伸缩的集群,建议使用CSI存储插件访问文件系统。对于规模稳定集群,建议使用Kubernetes内置存储卷volume访问文件系统。更多信息,请参见自建Kubernetes挂载NAS
存储插件使用须知如下:
  • 对于新建阿里云容器服务Kubernetes集群,推荐使用CNFS。
  • 对于已经创建的阿里云容器服务Kubernetes集群,建议迁移至CNFS。
  • 对于已经创建的Kubernetes集群,建议沿用已经安装的存储插件类型。
  • 不支持Flexvolume和CSI插件在同一个集群中使用。
  • 不支持Flexvolume转变到CSI插件。

关于Flexvolume和CSI存储插件的区别,请参见CSI和Flexvolume存储插件的区别

容器网络文件系统CNFS(推荐)

在容器中使用传统的NAS共享文件系统存在小文件读写延迟高,缺少容量配额的精确控制、无法恢复误删文件、缺失存储卷可观测指标等等问题。阿里云容器服务ACK的CNFS将阿里云的文件存储NAS抽象为一个K8s对象(CRD)进行独立管理,包括创建、删除、描述、挂载,监控及扩容等运维操作。并在CSI插件中利用NAS的加速客户端功能,实现NAS访问速度的大幅提升。CNFS是免费功能,开启加速能力后,会消耗Pod中50-100MB左右内存。

指标 测试场景 未开启CNFS加速客户端 开启CNFS加速客户端
元数据性能 100万文件目录遍历耗时 18min 小于60s
创建写入4 KB文件耗时 3000μs 小于200μs
重复读取4 KB文件耗时 400μs 小于100μs
吞吐性能 单节点读写吞吐性能 200~500 MB/s 大于800 MB/s
综合场景性能 5000张150 KB图片解压缩耗时 52s 约15s
构建Redis项目耗时 27s 约21s
重要 本文以上表格提供的数据仅为理论值(参考值),实际数据以您的操作环境为准。
  • 注解①:测试数据的ECS机型为ecs.hfg6.4xlarge,测试环境的差异可能导致性能数据有一定偏差。
  • 注解②:ECS网络带宽和NAS文件系统规格会影响单节点读写吞吐性能。

如果您使用容器网络文件系统CNFS访问NAS文件系统,请参见创建CNFS管理NAS文件系统(推荐)

如果您使用容器环境进行科学计算(AI训练、生物计算等)、搭建CICD平台或者网站服务,建议您开启CNFS的分布式读缓存功能。具体操作,请参见开启CNFS NAS计算端分布式缓存

关于容器网络文件系统CNFS的更多信息,请参见通过CNFS方式使用NAS文件系统

CSI存储插件

如果您使用CSI插件挂载NAS文件系统,请先查阅NAS存储卷概述

CSI存储插件支持以下两种挂载方式: 更多信息,请参见 安装与升级CSI组件配置NAS NFS存储卷容量NAS存储卷FAQ

Flexvolume存储插件(建议弃用)

如果您使用Flexvolume插件挂载NAS文件系统,请先查阅NAS存储卷概述。考虑到使用Flexvolume插件挂载NAS文件系统的灵活性和运维复杂度,建议您使用PV或PVC的方式挂载文件系统,避免使用Volume方式挂载。容器服务仅支持通过阿里云Flexvolume存储驱动挂载,不支持Kubernetes原生NFS驱动。

Flexvolume存储插件支持以下两种挂载方式: 更多信息,请参见 NAS存储卷FAQ

Windows容器挂载

如果您使用Windows容器挂载SMB文件系统,请参见在Windows容器中使用云盘及基于SMB的文件存储

附录