设置 NFS 共享存储类的子目录命名规则

目录

功能概述

每个使用 NFS 共享存储类创建的持久卷声明(PVC)对应于 NFS 共享中的一个子目录。默认情况下,子目录的命名规则为 ${pv.metadata.name}(即持久卷名称)。如果默认生成的名称不符合您的要求,您可以自定义子目录命名规则。本文档提供了配置方法和最佳实践,以便自定义命名约定。

使用案例

在 NFS 服务器端,子目录名称可用于识别其在 Kubernetes 中对应的持久卷声明(PVC)。这使得管理员能够监控每个 PVC 的存储使用情况,从而简化运维管理。

前提条件

  • 必须配置 NFS 服务器,并获取其访问方式。目前,平台支持三种 NFS 协议版本:v3v4.0v4.1。您可以在服务器端执行 nfsstat -s 来检查版本信息。

操作步骤

部署 NFS 共享存储插件

参见 部署 NFS 共享存储插件

创建 NFS 共享存储类

  1. 参见 创建 NFS 共享存储类

  2. 在点击 创建 之前,切换到 YAML 视图,并在参数部分添加 subDir 配置,以定义子目录的命名规则。

    配置示例
    子目录命名示例
    parameters:
      subDir: ${pvc.metadata.namespace}_${pvc.metadata.name}_${pv.metadata.name}

    注意:

    • 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/testns/1-test,则都可能生成相同的子目录 ns-1-test

    • ${pvc.metadata.namespace}/${pvc.metadata.name}/${pv.metadata.name}

      请勿将 subDir 配置为创建嵌套目录。NFS CSI 驱动程序在 PVC 被删除时仅删除最后一级目录 ${pv.metadata.name},从而在 NFS 服务器上留下孤立的父目录。

  3. 点击 创建

INFO

已存在的 StorageClass 不能被修改。