赛尔校园公共服务平台 Logo
平台使用
阿里云
百度云
移动云
智算服务
教育生态
登录 →
赛尔校园公共服务平台 Logo
平台使用 阿里云 百度云 移动云 智算服务 教育生态
登录
  1. 首页
  2. 阿里云
  3. 分布式云容器平台ACK One
  4. 操作指南
  5. 注册集群
  6. 接入云上Serverless算力
  7. ACS算力
  8. ACS算力高级配置
  9. 静态挂载NAS存储卷

静态挂载NAS存储卷

  • ACS算力高级配置
  • 发布于 2025-04-18
  • 0 次阅读
文档编辑
文档编辑

对于共享数据,I/O要求较高的应用场景,您可以使用文件存储 NAS(File Storage NAS)作为持久化存储卷。本文介绍如何为应用静态挂载NAS存储卷,并验证NAS的共享存储和持久化存储。

使用限制

NAS是一种可共享访问、弹性扩展、高可靠以及高性能的分布式文件系统,适用于共享数据,以及I/O要求较高的应用场景。更多信息,请参见存储概述。

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

  • NAS文件系统只能挂载到相同VPC的Pod上,不支持跨VPC挂载。

  • 仅支持通过NFSv3协议挂载NAS文件系统。

注意事项

  • NAS为共享存储,一个NAS存储卷可以挂载到多个Pod上。此时多个Pod可能同时修改相同数据,需要应用自行实现数据的同步。

  • 挂载NAS时,请勿在应用的YAML中配置securityContext.fsgroup,这可能会造成挂载失败。

    说明

    NAS文件系统的/目录不支持修改权限、属主和属组。

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

创建NAS文件系统和挂载点

NAS挂载点所属VPC必须与ACS集群中Pod所属VPC一致,否则会导致挂载失败。如果在Pod使用的VPC和交换机下,您已有NAS文件系统和挂载点,可跳过该步骤。

  1. 执行以下命令查看eci-profile的YAML,在vpcId和vSwitchIds中获取Pod使用的VPC ID和交换机ID。

    kubectl get cm -n kube-system eci-profile -o yaml
  2. 创建NAS文件系统和挂载点。

    1. 登录NAS文件系统控制台。

    2. 创建文件系统。

      1. 在文件系统列表页面,单击创建文件系统,然后选择创建通用型NAS或创建极速型NAS。

        重要
        • 各类型NAS文件系统的存储规格、性能、计费、支持的地域和可用区等信息,请参见通用型NAS和极速型NAS。

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

      2. 在弹出面板完成NAS相关参数配置,然后单击立即购买,并完成后续操作。

        本文以通用型NAS为例,需要注意的参数如下,更多信息,请参见创建文件系统。

        参数

        说明

        地域

        与ACS集群一致。

        可用区

        根据步骤1所获取的Pod使用的交换机ID,选择对应的可用区。

        协议类型

        选择NFS。目前不支持挂载SMB协议的NAS文件系统。

        专有网络VPC、虚拟交换机

        选择ACS集群中Pod使用的VPC和交换机。可根据步骤1所获取的VPC ID和交换机ID在专有网络控制台查询。

    3. 查看挂载点,并获取挂载点地址。

      说明

      通用型NAS在创建文件系统时会自动创建一个挂载点,极速型NAS需要手动创建挂载点。具体操作,请参见管理挂载点。

      1. 在文件系统列表页面,单击文件系统ID。

      2. 在文件系统详情页左侧导航栏,单击挂载使用。

      3. 在挂载点区域,确认已有挂载点,且挂载点的状态为可用。

        NAS挂载点.png

静态挂载NAS存储卷

步骤一:创建PVC

  1. 使用以下示例内容,创建nas-pvc.yaml文件。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: nas-pvc
      annotations:
        csi.alibabacloud.com/mountpoint: *******-mw***.cn-shanghai.nas.aliyuncs.com
        csi.alibabacloud.com/mount-options: nolock,tcp,noresvport
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 20Gi
      storageClassName: alibaba-cloud-nas

    相关参数说明如下:

    参数

    说明

    csi.alibabacloud.com/mountpoint

    要挂载的NAS文件系统目录。

    • 如果输入挂载点地址,例如****-****.<region>.nas.aliyuncs.com,则表示挂载的目录为NAS文件系统的根目录(/)。

    • 如果输入挂载点地址和子目录,例如****-****.<region>.nas.aliyuncs.com:/dir,则表示挂载的目录为NAS文件系统的/dir目录。如果/dir目录不存在,系统会自动新建。

    csi.alibabacloud.com/mount-options

    挂载参数。建议使用nolock,tcp,noresvport。

    accessModes

    访问模式。

    storage

    分配给Pod的存储容量,即要创建的NAS存储卷容量。

  2. 创建PVC。

    kubectl create -f nas-pvc.yaml
  3. 查看PV。

    kubectl get pv

    预期返回如下,在创建PVC时已基于传入的NAS文件系统挂载点等信息,自动创建对应的PV。

    NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM             STORAGECLASS        REASON   AGE
    nas-ea7a0b6a-bec2-4e56-b767-47222d3a****   20Gi       RWX            Retain           Bound    default/nas-pvc   alibaba-cloud-nas            1m58s
  4. 查看PVC。

    kubectl get pvc

    预期返回如下,PVC已关联自动创建的PV。

    NAME      STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS        VOLUMEATTRIBUTESCLASS  AGE
    nas-pvc   Bound    nas-ea7a0b6a-bec2-4e56-b767-47222d3a****   20Gi       RWX            alibaba-cloud-nas   <unset>                2m14s

步骤二:创建应用并挂载NAS

  1. 使用以下YAML内容,创建nas-test.yaml文件。

    以下YAML示例可以创建包含2个Pod的Deployment,2个Pod均通过名为nas-pvc的PVC申请存储资源,挂载路径均为/data。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nas-test
      labels:
        app: nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
            alibabacloud.com/compute-class: general-purpose
            alibabacloud.com/compute-qos: default
            alibabacloud.com/acs: "true"          
        spec:
          containers:
          - name: nginx
            image: mirrors-ssl.aliyuncs.com/nginx:stable-alpine
            ports:
            - containerPort: 80
            volumeMounts:
              - name: pvc-nas
                mountPath: /data
          volumes:
            - name: pvc-nas
              persistentVolumeClaim:
                claimName: nas-pvc
  2. 创建Deployment并挂载NAS。

    kubectl create -f nas-test.yaml
  3. 查看Deployment中Pod的部署情况。

    kubectl get pod | grep nas-test

    返回示例如下,已创建2个Pod。

    nas-test-****-***a   1/1     Running   0          40s
    nas-test-****-***b   1/1     Running   0          40s
  4. 查看挂载路径。

    命令示例如下,预期会返回NAS文件系统挂载目录下的数据。默认为空。

    kubectl exec nas-test-****-***a -- ls /data

验证NAS的共享存储和持久化存储

按照上文示例创建的Deployment中含有2个Pod,2个Pod挂载了同一NAS文件系统。您可以通过以下方式进行验证:

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

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

  1. 查看Pod信息。

    kubectl get pod | grep nas-test

    返回示例如下:

    nas-test-****-***a   1/1     Running   0          40s
    nas-test-****-***b   1/1     Running   0          40s
  2. 验证共享存储。

    1. 在一个Pod中创建文件。

      以名为nas-test-****-***a的Pod作为示例:

      kubectl exec nas-test-****-***a -- touch /data/test.txt
    2. 在另一个Pod中查看文件。

      以名为nas-test-****-***b的Pod作为示例:

      kubectl exec nas-test-****-***b -- ls /data

      预期返回如下,可以看到已共享新建的文件test.txt。

      test.txt
  3. 验证持久化存储。

    1. 重建Deployment。

      kubectl rollout restart deploy nas-test
    2. 查看Pod,等待新Pod创建成功。

      kubectl get pod | grep nas-test

      返回示例如下:

      nas-test-****-***c   1/1     Running   0          67s
      nas-test-****-***d   1/1     Running   0          49s
    3. 在新Pod中查看文件系统中的数据是否存在。

      以名为nas-test-c***的Pod作为示例:

      kubectl exec nas-test-****-***c -- ls /data

      预期返回如下,可以看到NAS文件系统中的数据依然存在,在新Pod的挂载目录下可以重新获取。

      test.txt
相关文章

使用自建镜像仓库创建ACS Pod 2025-04-18 18:14

拉取自建镜像仓库中的镜像时,可能会碰到因协议不同、证书认证失败或者使用了自建DNS服务器而导致镜像拉取失败的问题。本文介绍在自建镜像仓库采用HTTP协议和使用自签发证书或者自建DNS服务器的情况下,如何拉取自建镜像仓库中的镜像来创建ACS工作负载。 功能说明 拉取自建镜像仓库中的镜像时,可能会碰到E

为ACS Pod配置自定义DNS 2025-04-18 18:14

如果您需要使用自建DNS服务来解析镜像仓库以及其他应用的域名,需要将ACS Pod使用的DNS配置为您自建的DNS服务器。本文介绍如何为ACS Pod配置自定义DNS。 适用范围 以下3种情况可以通过Annotation配置自定义DNS:

使用PrivateLink解决数据中心网段IP冲突 2025-04-18 18:14

数据中心的Kubernetes集群通过专线接入ACK One注册集群后,在使用Serverless算力资源时,ack-virtual-node组件需要调用阿里云内网的OpenAPI进行资源生命周期管理。而这些内网的OpenAPI域名解析的IP地址通常都是100网段的IP,可能会导致内网中使用相同网段

静态挂载NAS存储卷 2025-04-18 18:14

对于共享数据,I/O要求较高的应用场景,您可以使用文件存储 NAS(File Storage NAS)作为持久化存储卷。本文介绍如何为应用

静态挂载OSS存储卷 2025-04-18 18:14

如果应用需要存储图片、音视频等非结构化数据,可以使用OSS作为持久化存储卷。本文介绍如何为应用静态挂载OSS存储卷,并验证OSS的共享存储和持久化存储。 注意事项 OSS是一个海量、安全、低成本、高可靠的存储空间,适合存储写入后较少修改的数据,以及非结构化数据(如图片、音视频等)。更多信息,请参见存

增加临时存储空间大小 2025-04-18 18:14

ACS Pod默认提供30 GiB的免费的临时存储空间(EphemeralStorage),如果该存储空间大小无法满足您的需求,您可以自定义增加临时存储空间大小。 背景信息 每个ACS Pod默认提供30 GiB的临时存储空间(免费),如下图所示。

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