创建 NFS 共享存储类
基于 Community NFS CSI(Container Storage Interface)存储驱动,提供访问多个 NFS 存储系统或账户的能力。
与传统的 NFS 访问客户端-服务器模型不同,NFS 共享存储使用 Community NFS CSI(Container Storage Interface)存储插件,这种方式更符合 Kubernetes 设计原则,并允许客户端访问多个服务器。
前提条件
- 必须已配置 NFS Server,并获取其访问方式。目前,平台支持三种 NFS 协议版本:
v3、v4.0和v4.1。你可以在服务器端执行nfsstat -s来检查版本信息。
部署 NFS CSI
通过 Web 控制台部署
-
进入 管理员。
-
在左侧导航栏中,点击 存储 > StorageClasses。
-
点击 创建 StorageClass。
-
在 NFS CSI 右侧,点击 部署 以跳转到 Plugins 页面。
-
在 NFS CSI 插件右侧,点击 ⋮ > 安装。
-
等待部署状态显示为 部署成功 后,再完成部署。
通过 YAML 部署
有关 YAML 安装,请参见 通过 YAML 安装。
NFS CSI 是一个 Non-config plugin,模块名称为 nfs。
创建 NFS 共享存储类
-
点击 创建 Storage Class。
注意:以下内容以表单形式展示,但你也可以选择使用 YAML 完成操作。
-
选择 NFS CSI,然后点击 下一步。
-
配置以下参数。
NOTEsubDir字段仅支持以下三个变量,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/test和ns/1-test,它们都可能生成相同的子目录ns-1-test。 -
${pvc.metadata.namespace}/${pvc.metadata.name}/${pv.metadata.name}请不要将 subDir 配置为创建嵌套目录。删除 PVC 时,NFS CSI Driver 只会删除最后一级目录${pv.metadata.name},从而在 NFS Server 上留下孤立的父目录。
-
确认配置信息无误后,点击 创建。