赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 文件存储NAS
  4. 操作指南
  5. 挂载访问
  6. 容器挂载文件系统
  7. 阿里云容器服务挂载NAS
  8. 容器服务Kubernetes版(ACK)挂载NAS
  9. 使用CSI存储插件挂载NAS
  10. 通过NFS使用NAS静态存储卷

通过NFS使用NAS静态存储卷

  • 使用CSI存储插件挂载NAS
  • 发布于 2025-04-22
  • 0 次阅读
文档编辑
文档编辑

NAS是一种可共享访问、弹性扩展、高可靠以及高性能的分布式文件系统。本文介绍如何使用阿里云NAS静态存储卷,及如何实现持久化存储与共享存储。

前提条件

  • 集群默认已安装CSI组件。如需升级请参见升级csi-plugin和csi-provisioner。

    说明

    如果您集群中使用Flexvolume组件,由于Flexvolume已废弃,请参见迁移Flexvolume至CSI完成迁移后再进行挂载。您可以在运维管理 > 组件管理,在存储页签下确认存储组件类型。

  • 已通过kubectl连接集群。具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群。

  • 确认已有NAS满足以下条件,否则请重新创建满足条件的NAS或者使用NAS动态存储卷。创建操作,请参见创建文件系统。

    • 协议类型为NFS。极速型NAS仅支持NFSv3。

    • 挂载点和集群节点在同一VPC内,且状态为可用。如需添加挂载点,请参见管理挂载点。

      说明

      如需加密NAS存储卷中的数据,支持创建NAS文件系统时配置加密类型。

使用限制

  • 不支持挂载SMB协议的NAS文件系统。

  • 通用NAS与极速NAS在挂载连通性、文件系统数量及协议类型等方面存在相应约束条件。更多信息,请参见使用限制。

  • NAS静态存储卷不支持扩容。

注意事项

  • NAS为共享存储,一个NAS存储卷可以挂载到多个Pod上,可能出现多个Pod同时写入数据的问题,需应用自行确保数据一致性。关于NAS并发写入的一些限制条件,请参见如何避免多进程或多客户端并发写同一日志文件可能出现的异常?和如何解决向NFS文件系统中写入数据延迟问题?

  • 请勿删除NAS挂载点,否则会造成操作系统无响应。

  • 在使用极速型NAS文件系统时,配置存储卷的path需要以/share为父目录。例如,Pod挂载的NAS文件系统子目录可配置为/share/path1。

  • 若您在应用模板中配置了securityContext.fsgroup参数,kubelet在存储卷挂载完成后会执行chmod或chown操作,导致挂载时间延长。若已配置securityContext.fsgroup参数,且需要减少挂载时间。具体操作,请参见NAS存储卷挂载时间延长。

步骤一:挂载NAS静态存储卷

kubectl

  1. 创建静态PV。

    1. 将以下示例YAML内容保存为pv-nas.yaml文件。

      apiVersion: v1
      kind: PersistentVolume
      metadata:
        name: pv-nas
        labels:
          alicloud-pvname: pv-nas
      spec:
        capacity:
          storage: 5Gi
        accessModes:
          - ReadWriteMany
        csi:
          driver: nasplugin.csi.alibabacloud.com
          volumeHandle: pv-nas   # 必须与PV Name保持一致。
          volumeAttributes:
            server: "0c47****-mpk25.cn-shenzhen.nas.aliyuncs.com"  # NAS挂载点,与集群VPC一致。
            path: "/csi"  # 挂载子目录。
        mountOptions:
        - nolock,tcp,noresvport
        - vers=3

      参数

      说明

      name

      PV的名称。

      labels

      设置PV的标签。

      storage

      NAS的可使用量。

      说明

      NAS存储卷在实际使用中,不受此storage使用量限制,根据不同NAS使用限制确认NAS存储卷最终可使用的容量。

      accessModes

      配置访问模式,默认为ReadWriteMany,也支持ReadWriteOnce和ReadOnlyMany。

      driver

      驱动类型。此处必须配置为nasplugin.csi.alibabacloud.com,表示使用阿里云NAS CSI插件。

      volumeHandle

      配置PV的唯一标识符,必须与PV Name保持一致。若需要同时使用多个PV,则各个PV中该值须唯一。

      server

      NAS挂载点地址,必须与集群VPC一致。

      说明

      替换为实际的挂载点地址,如何查看挂载点地址,请参见管理挂载点。

      path

      在容器中挂载NAS存储卷的子目录。通用型NAS的父目录为/。

      重要

      极速型NAS需要以/share为父目录,则此处子目录应为/share/csi。

      mountOptions

      挂载NAS的options参数在mountOptions中配置,包括NFS协议版本。挂载NAS存储卷的NFS协议版本号,推荐使用v3,极速类型NAS仅支持v3。关于NFS协议的更多信息,请参见NFS协议。

    2. 创建静态PV。

      kubectl create -f pv-nas.yaml
  2. 创建NAS存储声明PVC,使用selector筛选PV,精确配置PVC和PV的绑定关系。

    1. 将以下示例YAML内容保存至pvc-nas.yaml文件。

      kind: PersistentVolumeClaim
      apiVersion: v1
      metadata:
        name: pvc-nas
      spec:
        accessModes:
          - ReadWriteMany
        resources:
          requests:
            storage: 5Gi
        selector:
          matchLabels:
            alicloud-pvname: pv-nas

      参数

      说明

      示例值

      name

      PVC名称。

      pvc-nas

      accessModes

      访问模式。默认为ReadWriteMany,也支持ReadWriteOnce或ReadOnlyMany。

      ReadWriteMany

      storage

      声明应用使用NAS存储卷的容量,不能大于存储卷的总量。

      说明

      NAS存储卷在实际使用中,不受此storage使用量限制,根据不同NAS使用限制确认NAS存储卷最终可使用的容量。

      5Gi

      matchLabels

      输入PV的标签,用于关联PV。

      pv-nas

    2. 创建静态PVC。

      kubectl create -f pvc-nas.yaml
  3. 创建名为nas-static的应用,并挂载PVC。

    1. 以下为创建nas-static应用的nas.yaml示例文件。

      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: nas-static
        labels:
          app: nginx
      spec:
        replicas: 2
        selector:
          matchLabels:
            app: nginx
        template:
          metadata:
            labels:
              app: nginx
          spec:
            containers:
            - name: nginx
              image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
              ports:
              - containerPort: 80
              volumeMounts:
                - name: pvc-nas
                  mountPath: "/data"
            volumes:
              - name: pvc-nas
                persistentVolumeClaim:
                  claimName: pvc-nas

      参数

      说明

      mountPath

      NAS在容器中挂载的位置。

      claimName

      PVC的名称,用于绑定PVC。

    2. 创建名为nas-static的应用,并挂载PVC。

      kubectl create -f nas.yaml
  4. 查看Pod信息。

    kubectl get pod

    预期输出:

    NAME                          READY   STATUS    RESTARTS   AGE
    nas-static-5b5cdb85f6-n****   1/1     Running   0          32s
    nas-static-c5bb4746c-4****    1/1     Running   0          32s

控制台

步骤一:创建PV

  1. 登录容器服务管理控制台,在左侧导航栏选择集群列表。

  2. 在集群列表页面,单击目标集群名称,然后在左侧导航栏,选择存储 > 存储卷。

  3. 在存储卷页面,单击创建。

  4. 在创建存储卷页面配置参数,配置完成后,单击创建。

    配置项

    说明

    示例值

    存储卷类型

    选择NAS。

    NAS

    名称

    存储卷名称。在集群内必须唯一。

    pv-nas

    总量

    存储卷的容量。

    说明

    NAS文件系统本身不限制使用量。此处不是NAS文件系统的使用限额,只是所创建存储卷的容量声明。

    20Gi

    访问模式

    支持ReadWriteMany和ReadWriteOnce。默认为ReadWriteMany。

    ReadWriteMany

    是否使用CNFS

    是否使用CNFS功能。开启后,您需要进行以下操作:

    • 选择对应的CNFS或新建CNFS。关于CNFS的更多信息,请参见创建CNFS管理NAS文件系统(推荐)。

    • 是否开启CNFS加速功能,关于CNFS加速更多信息,请参见开启CNFS NAS计算端分布式缓存。

    开启

    挂载点域名

    仅在未开启CNFS时,需要设置。

    您可以通过选择挂载点或者自定义的方式配置要挂载的NAS文件系统目录。关于如何查看挂载点地址,请参见管理挂载点。

    0c47****-mpk25.cn-shenzhen.nas.aliyuncs.co

    高级选项(选填)

    挂载路径:NAS文件系统中的挂载路径。以/为根目录,设定后存储卷将挂载到指定的子目录。

    • 如果NAS根目录下没有此子目录,会默认创建后再进行挂载。

    • 您可以不填此项,默认挂载到NAS根目录。

    • 极速型NAS需要以/share为根目录,例如/share/data。

    /data

    回收策略:默认为Delete,支持Retain。

    • Delete:需配合archiveOnDelete一起使用。

      • 当archiveOnDelete为true时,删除PVC时,PV和NAS文件只会被重命名,不会被删除。

      • 当archiveOnDelete为false时,删除PVC时,PV和NAS文件会被真正删除。

    • Retain:删除PVC时,PV和NAS文件不会被删除,需要您手动删除。

    如果数据安全性要求高,推荐使用Retain,以免误删除数据。

    Retain

    挂载选项:挂载NAS的可选参数,包括NFS协议版本等参数。NFS协议版本号推荐使用v3,且极速型NAS仅支持v3。关于NFS协议的更多信息,请参见NFS协议。

    v3

    标签

    为该存储卷添加标签。

    pv-nas

    创建完成后,在存储卷页面可以看到新创建的PV。

步骤二:创建PVC

  1. 在集群管理页左侧导航栏,选择存储 > 存储声明。

  2. 在存储声明页面,单击创建。

  3. 在创建存储声明页面配置参数。配置完成后,单击创建。

    参数

    说明

    示例值

    存储声明类型

    选择NAS。

    NAS

    名称

    存储声明名称在集群内必须唯一。

    pvc-nas

    分配模式

    选择已有存储卷。

    说明

    若未创建存储卷,您可以设置分配模式为创建存储卷,配置创建存储卷参数。

    选择已有存储卷

    已有存储卷

    单击选择已有存储卷,在目标存储卷右侧操作列单击选择,选择存储卷。

    已有存储卷

    总量

    声明所需使用的存储卷的容量。

    说明
    • 所创建存储卷声明的容量不能超过待挂载的存储卷容量。

    20

    访问模式

    默认为ReadWriteMany,也可选择ReadWriteOnce或ReadOnlyMany。

    ReadWriteMany

步骤三:创建应用

  1. 在集群管理页左侧导航栏,选择工作负载 > 无状态。

  2. 在无状态页面,单击使用镜像创建。

  3. 配置创建应用的参数信息,配置完成后,单击创建。

    主要参数如下,其他参数保持默认即可。更多信息,请参见创建无状态工作负载Deployment。

    配置项

    参数

    说明

    示例

    应用基本信息

    应用名称

    Deployment名称,自定义输入。格式要求请参考界面提示。

    test-nas

    副本数量

    Deployment的副本数量。

    2

    容器配置

    镜像名称

    用于部署应用的镜像地址。

    anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6

    所需资源

    所需的vCPU和内存资源。

    0.25 vCPU,0.5 GiB

    数据卷

    单击增加云存储声明,然后完成参数配置。

    • 挂载源:选择之前创建的PVC。

    • 容器路径:输入NAS文件系统要挂载到的容器路径。

    • 挂载源:pvc-nas

    • 容器路径:/data

    image.png

  4. 查看应用部署状态。

    1. 在无状态页面,单击应用名称。

    2. 在容器组页签下,确认Pod已正常运行(状态为Running)。

步骤二:验证NAS存储特性

以上创建的工作负载Deployment中包含2个Pod,2个Pod挂载了同一个NAS文件系统,您可以通过以下方式对NAS存储卷进行共享存储和持久化存储验证。

  • 重建Pod,然后在新建的Pod中查看NAS文件系统中的数据是否存在,以此来验证持久化存储。

  • 在一个Pod中创建文件,然后在另一个Pod中查看文件,以此来验证共享存储。

验证NAS的持久化存储

  1. 查看应用所在的Pod。

    kubectl get pod 

    预期输出:

    NAME                          READY   STATUS    RESTARTS   AGE
    nas-static-5b5cdb85f6-a****   1/1     Running   0          32s
    nas-static-c5bb4746c-b****    1/1     Running   0          32s
  2. 在一个Pod中创建文件。

    1. 查看应用中挂载的/data路径下有无文件。

      以一个名为nas-static-5b5cdb85f6-a****的Pod为例。

      kubectl exec nas-static-5b5cdb85f6-a**** -- ls /data

      无返回结果,说明当前存储路径/data下无文件。

    2. 在该Pod的/data路径下创建文件nas。

      kubectl exec nas-static-5b5cdb85f6-a**** -- touch /data/nas
  3. 在另一个Pod中查看文件。

    以另一个名为nas-static-5b5cdb85f6-b****的Pod为例。

    kubectl exec nas-static-5b5cdb85f6-b**** -- ls /data

    预期输出:

    nas
  4. 重建Pod。

    1. 删除Pod。

      kubectl delete pod nas-static-5b5cdb85f6-a****
    2. 同时在另一个窗口中,查看Pod删除及Kubernetes重建Pod的过程。

      kubectl get pod -w -l app=nginx
  5. 验证删除Pod后,NAS里创建的文件是否还存在。

    1. 查看重建的Pod名称。

      kubectl get pod

      预期输出:

      NAME                                  READY    STATUS    RESTARTS   AGE
      nas-static-5b5cdb85f6-c****   1/1     Running   0          32s
      nas-static-c5bb4746c-a****    1/1     Running   0          32s
    2. 查看重建Pod的/data路径下的文件。

      以名为nas-static-5b5cdb85f6-c****的Pod为例。

      kubectl exec nas-static-5b5cdb85f6-c**** -- ls /data

      预期输出:

      nas

      nas文件仍然存在,表明NAS的数据可持久化保存。

验证NAS的共享存储

  1. 查看应用所在的Pod。

    kubectl get pod 

    预期输出:

    NAME                          READY   STATUS    RESTARTS   AGE
    nas-static-5b5cdb85f6-n****   1/1     Running   0          32s
    nas-static-c5bb4746c-4****    1/1     Running   0          32s
  2. 查看两个Pod的/data路径下的文件。

    kubectl exec nas-static-5b5cdb85f6-n**** -- ls /data
    kubectl exec nas-static-c5bb4746c-4**** -- ls /data

    无返回结果,说明当前存储路径/data下无文件。

  3. 在任意一个Pod 的/data路径下创建文件nas。

    以名为nas-static-5b5cdb85f6-n****的Pod为例。

     kubectl exec nas-static-5b5cdb85f6-n**** -- touch /data/nas
  4. 查看两个Pod的/data路径下的文件。

    1. 查看其中一个名为nas-static-5b5cdb85f6-n****的Pod 的/data路径下的文件。

      kubectl exec nas-static-5b5cdb85f6-n**** -- ls /data

      预期输出:

      nas
    2. 查看另一个名为nas-static-c5bb4746c-4****的Pod 的/data路径下的文件。

      kubectl exec nas-static-c5bb4746c-4**** -- ls /data

      预期输出:

      nas

      如果在任意一个Pod的/data下创建的文件,在两个Pod的/data路径下均存在此文件,表明两个Pod共享一个NAS。

相关文档

  • 如需通过TLS挂载,请参见如何通过CSI使用TLS挂载NAS文件系统?

  • 使用NAS存储卷时,如遇到权限无法访问的问题,请参见使用NAS存储卷时,提示chown: Operation not permitted解决。

  • 为确保不同用户和用户组之间数据的安全性,您可以参考常见问题解决。

  • 如果您在使用NAS过程中遇到读写访问的问题,可参见读写访问文件类问题进行排查。

  • 您可以使用NAS动态存储卷根据需求动态调整存储卷大小。

  • 您可以使用通用型NAS的目录配额功能,实现对NAS存储卷空间的有效控制。请参见扩容NAS动态存储卷容量。

  • 您可以直接使用NAS存储卷,也可以使用CNFS管理NAS存储卷来提升NAS的性能和QoS控制。

相关文章

NAS存储卷 2025-04-22 12:09

NAS文件系统适用于大数据分析、共享数据、Web应用以及保存日志等场景。您可以将NAS文件系统作为存储卷挂载到容器中以满足数据的持久化存储和共享存储的需求。通过阿里云CSI组件,您可以通过CNFS托管NAS或者直接在容器中使用NAS等方式挂载使用。 如何选择NAS

使用CNFS管理NAS共享存储卷(推荐) 2025-04-22 12:09

容器服务 Kubernetes 版支持以NAS共享存储卷的方式挂载和使用CNFS。通过CNFS管理NAS共享存储卷,您可以在多个应用或Pod之间挂载同一个NAS文件系统的相同目录,以解决Pod之间共享数据的问题。本文以StatefulSet类型应用为例介绍如何使用CNFS管理NAS共享存储卷。

使用CNFS管理NAS隔离存储卷(推荐) 2025-04-22 12:09

容器服务 Kubernetes 版支持以NAS隔离存储卷的方式挂载和使用CNFS。在多租户环境或其他需要数据隔离的场景中,您可以通过CNFS管理NAS隔离存储卷,在多个应用或Pod之间挂载同一个NAS文件系统的不同目录,使得每个目录均对应一个存储卷,存储卷之间是相互独立的、相互隔离的。本文以Stat

使用CNFS自动扩容NAS存储卷 2025-04-22 12:09

通过定义CNFS中托管的NAS存储卷的自动扩容策略,当NAS存储卷的使用率高于某个阈值时,触发NAS存储卷的自动扩容。本文介绍如何使用CNFS实现NAS存储卷的自动扩容。 前提条件

通过CNFS管理NAS文件系统(推荐) 2025-04-22 12:09

容器网络文件系统CNFS(Container Network File System)将阿里云的文件存储抽象为一个K8s对象(CRD)进行独立管理,包括创建、删除、描述、挂载、监控及扩容等运维操作,为了提升NAS文件系统的性能,您可以通过CNFS管理NAS文件系统,以提升NAS文件系统的性能和QoS

开启CNFS NAS计算端分布式缓存 2025-04-22 12:09

CNFS文件存储计算端分布式缓存可提供多链接访问、元数据缓存、分布式数据缓存等加速能力,并提供端侧性能监控、QoS能力。本文介绍如何在ACK集群中开启CNFS NAS计算端分布式缓存,并通过分布式缓存功能加速读取数据。 前提条件

目录
Copyright © 2025 your company All Rights Reserved. Powered by 赛尔网络.
京ICP备14022346号-15
gongan beian 京公网安备11010802041014号