每个使用 NFS 共享存储类创建的持久卷声明(PVC)对应于 NFS 共享中的一个子目录。默认情况下,子目录的命名规则为 ${pv.metadata.name}
(即持久卷名称)。如果默认生成的名称不符合您的要求,您可以自定义子目录命名规则。本文档提供了配置方法和最佳实践,以便自定义命名约定。
在 NFS 服务器端,子目录名称可用于识别其在 Kubernetes 中对应的持久卷声明(PVC)。这使得管理员能够监控每个 PVC 的存储使用情况,从而简化运维管理。
v3
、v4.0
和 v4.1
。您可以在服务器端执行 nfsstat -s
来检查版本信息。参见 部署 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 不能被修改。