创建 NFS 共享存储类

基于 Community NFS CSI(Container Storage Interface)存储驱动,提供访问多个 NFS 存储系统或账户的能力。

与传统的 NFS 访问客户端-服务器模型不同,NFS 共享存储使用 Community NFS CSI(Container Storage Interface)存储插件,这种方式更符合 Kubernetes 设计原则,并允许客户端访问多个服务器。

前提条件

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

部署 NFS CSI

通过 Web 控制台部署

  1. 进入 管理员

  2. 在左侧导航栏中,点击 存储 > StorageClasses

  3. 点击 创建 StorageClass

  4. NFS CSI 右侧,点击 部署 以跳转到 Plugins 页面。

  5. NFS CSI 插件右侧,点击 ⋮ > 安装

  6. 等待部署状态显示为 部署成功 后,再完成部署。

通过 YAML 部署

有关 YAML 安装,请参见 通过 YAML 安装

NFS CSI 是一个 Non-config plugin,模块名称为 nfs

创建 NFS 共享存储类

  1. 点击 创建 Storage Class

    注意:以下内容以表单形式展示,但你也可以选择使用 YAML 完成操作。

  2. 选择 NFS CSI,然后点击 下一步

  3. 配置以下参数。

    参数描述
    名称存储类的名称。在当前集群中必须唯一。
    服务地址NFS Server 的访问地址。例如:192.168.2.11
    路径Server 节点上 NFS 文件系统的挂载路径。例如:/nfs/data
    NFS 协议版本目前支持三个版本:v3v4.0v4.1
    回收策略持久卷的回收策略。
    - Delete:删除持久卷声明后,已绑定的持久卷也会被删除。
    - Retain:即使删除持久卷声明,已绑定的持久卷仍会保留。
    访问模式当前存储支持的所有访问模式。在后续声明持久卷时,仅可选择其中一种模式来挂载持久卷。
    - ReadWriteOnce (RWO):可由单个节点以读写方式挂载。
    - ReadWriteMany (RWX):可由多个节点以读写方式挂载。
    - ReadOnlyMany (ROX):可由多个节点以只读方式挂载。
    分配项目分配可使用此类存储的项目。
    如果当前没有项目需要此类存储,请先留空,之后再更新。
    subDir使用 NFS Shared Storage Class 创建的每个 PersistentVolumeClaim (PVC) 都对应 NFS 共享中的一个子目录。默认情况下,子目录名称使用 ${pv.metadata.name}(即 PersistentVolume 名称)模式。如果默认生成的名称不符合你的需求,可以自定义子目录命名规则。
    NOTE

    subDir 字段仅支持以下三个变量,NFS CSI Driver 会自动解析这些变量:

    • ${pvc.metadata.namespace}:PVC Namespace。
    • ${pvc.metadata.name}:PVC Name。
    • ${pv.metadata.name}:PV Name。

    subDir 命名规则 必须 保证子目录名称唯一。否则,多个 PVC 可能会共享同一子目录,从而导致数据冲突。

    推荐配置:

    • ${pvc.metadata.namespace}_${pvc.metadata.name}_${pv.metadata.name}
    • <cluster-identifier>_${pvc.metadata.namespace}_${pvc.metadata.name}_${pv.metadata.name}

    此配置适用于多个 Kubernetes 集群共享同一个 NFS Server 的场景,通过在子目录命名规则中加入集群特定标识符(例如集群名称),可清晰地区分不同集群。

    不推荐配置:

    • ${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 配置为创建嵌套目录。删除 PVC 时,NFS CSI Driver 只会删除最后一级目录 ${pv.metadata.name},从而在 NFS Server 上留下孤立的父目录。

  4. 确认配置信息无误后,点击 创建