设置 NFS Shared Storage Class 的子目录命名规则

功能简介

每个使用 nfs shared storage class 创建的 pvc 都对应一个 nfs share 的子目录, 子目录的默认命名规则是 ${pv.metadata.name} 即 PV 名称。如果默认生成的名称不符合您的使用需求,您可以自定义子目录名称。本文档将提供配置方法以及配置建议。

使用场景

在 NFS Server 端通过子目录名称得知其在 Kubernetes 中对应的 PVC,然后统计各 PVC 的使用量,方便运维管理。

前置条件

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

操作步骤

部署 NFS 共享存储插件

Refer to 部署 NFS 共享存储插件

创建 NFS 共享存储类

  1. Refer to 创建 NFS 共享存储类

  2. 在点击创建前,切换至 YAML 视图,在 parameters 下添加 subDir 配置子目录的命名规则。

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

    说明:

    • subDir 仅支持 ${pvc.metadata.namespace}, ${pvc.metadata.name}, ${pv.metadata.name} 3 个变量,nfs csi driver 会自动转换成 PVC 的命名空间PVC 名称 以及 PV 名称
    • subDir 配置的命名规则需要保证生成子目录名称的唯一性,否则会出现不同 PVC 使用相同子目录的情况。

    推荐配置:

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

    • <ClusterName>_${pvc.metadata.namespace}_${pvc.metadata.name}_${pv.metadata.name}

      适用于多个 Kubernetes 集群使用同一个 NFS Server,能够区分集群。

    不推荐配置:

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

      请避免使用 - 来作为分隔符,避免出现 ns-1/testns/1-test 生成相同的子目录 ns-1-test 的情况。

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

      请避免将规则配置成多级目录,nfs csi driver 在 PVC 删除后仅会删除最后一级目录 ${pv.metadata.name},导致 NFS Server 上有残留目录。

  3. 点击 创建

INFO

已创建的 StorageClass 不支持配置。