设置 NFS 共享存储类的子目录命名规则
目录
功能概述
每个使用 NFS 共享存储类创建的持久卷声明(PVC)对应于 NFS 共享中的一个子目录。默认情况下,子目录的命名规则为 ${pv.metadata.name}(即持久卷名称)。如果默认生成的名称不符合您的要求,您可以自定义子目录命名规则。本文档提供了配置方法和最佳实践,以便自定义命名约定。
使用案例
在 NFS 服务器端,子目录名称可用于识别其在 Kubernetes 中对应的持久卷声明(PVC)。这使得管理员能够监控每个 PVC 的存储使用情况,从而简化运维管理。
前提条件
- 必须配置 NFS 服务器,并获取其访问方式。目前,平台支持三种 NFS 协议版本:
v3、v4.0和v4.1。您可以在服务器端执行nfsstat -s来检查版本信息。
操作步骤
部署 NFS 共享存储插件
参见 部署 NFS 共享存储插件。
创建 NFS 共享存储类
-
参见 创建 NFS 共享存储类。
-
在点击 创建 之前,切换到 YAML 视图,并在参数部分添加
subDir配置,以定义子目录的命名规则。注意:
subDir字段仅支持以下三个变量,NFS CSI 驱动程序会自动解析:${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 驱动程序在 PVC 被删除时仅删除最后一级目录${pv.metadata.name},从而在 NFS 服务器上留下孤立的父目录。
-
点击 创建。
已存在的 StorageClass 不能被修改。