容器挂载文件系统
本文介绍阿里云容器服务挂载NAS文件系统的方式,您可以使用CSI存储插件或使用容器网络文件系统CNFS挂载NAS文件系统。
请使用以下推荐的方式挂载NAS文件系统。使用其他方式挂载NAS文件系统可能出现稳定性风险,NAS团队无法预估该风险且由于该风险引起的一切损失和后果均由您自行承担。
容器服务存储插件说明
阿里云容器服务Kubernetes版基于Kubernetes容器存储接口(CSI),深度融合阿里云存储服务,并完全兼容Kubernetes原生的存储服务。
容器网络文件系统CNFS则是阿里云容器服务利用CSI插件抽象出的新的容器存储管理方式,与传统CSI使用模式保持兼容。我们推荐您在使用阿里云容器服务时使用CNFS来管理和访问NAS存储卷,从而获得明显的性能提升和强大的管理能力和I/O可观测性。
如果您的容器集群规模较小,很少进行弹性伸缩,且主要用于测试目的,您也可以使用HostPath方式使用NAS。更多信息,请参见HostPath数据卷。
如果是自建Kubernetes集群,对于大规模弹性伸缩的集群,建议使用CSI存储插件访问文件系统。对于规模稳定集群,建议使用Kubernetes内置存储卷volume访问文件系统。更多信息,请参见自建Kubernetes挂载NAS。
存储插件使用须知如下:
对于新建阿里云容器服务Kubernetes集群,推荐使用CNFS。
对于已经创建的阿里云容器服务Kubernetes集群,建议迁移至CNFS。
对于已经创建的Kubernetes集群,建议沿用已经安装的存储插件类型。
关于CSI存储插件的更多信息,请参见存储。
容器网络文件系统CNFS(推荐)
在容器中使用传统的NAS共享文件系统存在小文件读写延迟高,缺少容量配额的精确控制、无法恢复误删文件、缺失存储卷可观测指标等等问题。阿里云容器服务ACK的CNFS将阿里云的文件存储NAS抽象为一个K8s对象(CRD)进行独立管理,包括创建、删除、描述、挂载,监控及扩容等运维操作。并在CSI插件中利用NAS的加速客户端功能,实现NAS访问速度的大幅提升。CNFS是免费功能,开启加速能力后,会消耗Pod中50~100 MB左右内存。
指标 | 测试场景① | 未开启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存储插件支持以下两种挂载方式:
静态存储卷挂载:如果您需要手动创建PV,请参见通过NFS使用NAS静态存储卷。
动态存储卷挂载:如果您需要存储插件(Storage Class)自动创建的PV,请参见通过NFS使用NAS动态存储卷。
如需更深入地理解和管理CSI插件及CSI Provisioner组件,请参见如下信息:
更多存储相关问题,请参见NAS存储卷FAQ。
附录
容器持久化存储系列课程,请参见玩转容器持久化存储。