本文介绍使用容器服务Kubernetes版挂载NAS文件系统的方式,您可以使用Flexvolume存储插件和CSI存储插件或使用容器网络文件系统CNFS挂载NAS文件系统,也可以通过Windows容器挂载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存储卷概述。
- 静态存储卷挂载,请参见通过NFS使用NAS静态存储卷。
- 动态存储卷挂载,请参见通过NFS使用NAS动态存储卷。
Flexvolume存储插件(建议弃用)
如果您使用Flexvolume插件挂载NAS文件系统,请先查阅NAS存储卷概述。考虑到使用Flexvolume插件挂载NAS文件系统的灵活性和运维复杂度,建议您使用PV或PVC的方式挂载文件系统,避免使用Volume方式挂载。容器服务仅支持通过阿里云Flexvolume存储驱动挂载,不支持Kubernetes原生NFS驱动。
- 静态存储卷挂载,请参见使用NAS静态存储卷。
- 动态存储卷挂载,请参见使用NAS动态存储卷。
Windows容器挂载
如果您使用Windows容器挂载SMB文件系统,请参见在Windows容器中使用云盘及基于SMB的文件存储。