创建 NFS 共享存储类

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

与传统的 NFS 访问客户端-服务器模式不同,NFS 共享存储采用社区的 NFS CSI(Container Storage Interface)存储插件,更符合 Kubernetes 设计理念,并允许客户端访问多个服务器。

目录

前提条件

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

部署 Alauda Container Platform NFS CSI 插件

通过 Web 控制台部署

  1. 进入 Administrator

  2. 在左侧导航栏点击 Storage > StorageClasses

  3. 点击 Create StorageClass

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

  5. Alauda Container Platform NFS CSI 插件右侧点击 ⋮ > Install

  6. 等待部署状态显示 Deployment Successful 后完成部署。

通过 YAML 部署

参考 Installing via YAML

Alauda Container Platform NFS CSI 是一个 Non-config plugin,模块名为 nfs

创建 NFS 共享存储类

  1. 点击 Create Storage Class

    注意:以下内容以表单形式展示,您也可以选择通过 YAML 完成操作。

  2. 选择 NFS CSI,点击 Next

  3. 按照以下说明配置相关参数。

    参数说明
    Name存储类名称,在当前集群内必须唯一。
    Service AddressNFS 服务器的访问地址。例如:192.168.2.11
    Path服务器节点上 NFS 文件系统的挂载路径。例如:/nfs/data
    NFS Protocol Version当前支持三种版本:v3v4.0v4.1
    Reclaim Policy持久卷的回收策略。
    - Delete:当持久卷声明被删除时,绑定的持久卷也会被删除。
    - Retain:即使持久卷声明被删除,绑定的持久卷仍然保留。
    Access Modes当前存储支持的所有访问模式。在后续声明持久卷时,只能选择其中一种模式挂载持久卷。
    - ReadWriteOnce (RWO):允许单个节点以读写方式挂载。
    - ReadWriteMany (RWX):允许多个节点以读写方式挂载。
    - ReadOnlyMany (ROX):允许多个节点以只读方式挂载。
    Allocated Projects请分配可以使用此类存储的项目。
    如果当前没有项目需要此类存储,可以暂时不分配,后续再更新。
    subDir使用 NFS 共享存储类创建的每个 PersistentVolumeClaim (PVC) 对应 NFS 共享中的一个子目录。默认子目录名称采用 ${pv.metadata.name}(即 PersistentVolume 名称)模式生成。如果默认生成的名称不符合需求,可以自定义子目录命名规则。
    NOTE

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

    • ${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 Driver 删除 PVC 时只会删除最末级目录 ${pv.metadata.name},会在 NFS 服务器上留下孤立的父目录。

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