基于社区 NFS CSI(Container Storage Interface)存储驱动,提供访问多个 NFS 存储系统或账户的能力。
与传统的 NFS 访问客户端-服务器模型不同,NFS 共享存储采用社区 NFS CSI(Container Storage Interface)存储插件,更符合 Kubernetes 设计理念,允许客户端访问多个服务器。
v3、v4.0 和 v4.1。您可以在服务器端执行 nfsstat -s 来查看版本信息。进入 管理员。
在左侧导航栏点击 Storage > StorageClasses。
点击 Create StorageClass。
在 NFS CSI 右侧点击部署,跳转到 Plugins 页面。
在 Alauda Container Platform NFS CSI 插件右侧,点击 ⋮ > Install。
等待部署状态显示 Deployment Successful 后完成部署。
Alauda Container Platform NFS CSI 是一个 非配置插件,模块名为 nfs
点击 Create Storage Class。
注意:以下内容以表单形式展示,您也可以选择通过 YAML 完成操作。
选择 NFS CSI 并点击 Next。
按照以下说明配置相关参数。
| 参数 | 说明 |
|---|---|
| Name | 存储类名称,必须在当前集群内唯一。 |
| Service Address | NFS 服务器的访问地址。例如:192.168.2.11。 |
| Path | NFS 文件系统在服务器节点上的挂载路径。例如:/nfs/data。 |
| NFS Protocol Version | 当前支持三种版本:v3、v4.0 和 v4.1。 |
| Reclaim Policy | 持久卷的回收策略。 - Delete:当持久卷声明被删除时,绑定的持久卷也会被删除。 - Retain:即使持久卷声明被删除,绑定的持久卷仍然保留。 |
| Access Modes | 当前存储支持的所有访问模式。在后续声明持久卷时,只能选择其中一种模式来挂载持久卷。 - ReadWriteOnce (RWO):单个节点可读写挂载。 - ReadWriteMany (RWX):多个节点可读写挂载。 - ReadOnlyMany (ROX):多个节点只读挂载。 |
| Allocated Projects | 请分配可以使用此类存储的项目。 如果当前没有项目需要此类存储,可以暂时不分配,后续再更新。 |
| subDir | 使用 NFS 共享存储类创建的每个 PersistentVolumeClaim (PVC) 对应 NFS 共享中的一个子目录。默认子目录命名规则为 ${pv.metadata.name}(即 PersistentVolume 名称)。如果默认生成的名称不符合需求,可以自定义子目录命名规则。 |
subDir 字段仅支持以下三种变量,NFS CSI Driver 会自动解析:
${pvc.metadata.namespace}:PVC 命名空间。${pvc.metadata.name}:PVC 名称。${pv.metadata.name}:PV 名称。subDir 命名规则 必须 保证子目录名称唯一,否则多个 PVC 可能共用同一子目录,导致数据冲突。
推荐配置:
${pvc.metadata.namespace}_${pvc.metadata.name}_${pv.metadata.name}<cluster-identifier>_${pvc.metadata.namespace}_${pvc.metadata.name}_${pv.metadata.name}该配置适用于多个 Kubernetes 集群共享同一 NFS 服务器,通过在子目录命名规则中加入集群标识(如集群名)实现集群间的区分。
不推荐配置:
${pvc.metadata.namespace}-${pvc.metadata.name}-${pv.metadata.name}
避免使用 - 作为分隔符,可能导致子目录名称歧义。例如:两个 PVC 分别命名为 ns-1/test 和 ns/1-test,都可能生成相同的子目录 ns-1-test。
${pvc.metadata.namespace}/${pvc.metadata.name}/${pv.metadata.name}
不要配置 subDir 生成嵌套目录。NFS CSI Driver 删除 PVC 时只会删除最后一级目录 ${pv.metadata.name},会在 NFS 服务器上遗留父目录。
确认配置信息无误后,点击 Create。