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

使用CNFS管理NAS共享存储卷(推荐)

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

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

前提条件

  • 已开通文件存储NAS服务。

    首次登录文件存储NAS产品详情页时,按照页面引导开通服务。

  • 已创建Kubernetes集群,Kubernetes版本为v1.20及以上,且存储插件选择为CSI。具体操作,请参见创建ACK托管集群。

  • CSI-Plugin和CSI-Provisioner组件版本不低于v1.24.11-5221f79-aliyun。关于升级CSI-Plugin和CSI-Provisioner组件的操作,请参见管理csi-plugin和csi-provisioner组件。

  • storage-operator组件版本不低于v1.24.105-825188d-aliyun。关于升级storage-operator组件的操作,请参见管理组件。

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

    说明

    关于什么是容器网络文件系统CNFS,请参见容器网络文件系统CNFS。

    关于如何使用CNFS托管NAS文件系统,请参见通过CNFS管理NAS文件系统(推荐)。

步骤一:创建共享存储卷的工作负载

  • 创建名为cnfs-nas-static-pv的PV,PV中引用名称为cnfs-nas-filesystem的CNFS,该CNFS为您已创建的NAS文件名。

  • 创建名为cnfs-nas-static-pvc的PVC,将PV和PVC进行绑定。

  • 创建名为cnfs-nas-static-sts的StatefulSet,StatefulSet中使用busybox镜像挂载PVC,并将1 G的临时数据1G.tmpfile写入挂载点中。

展开查看创建工作负载的YAML文件

cat << EOF | kubectl apply -f -
apiVersion: v1
kind: PersistentVolume
metadata:
  name: cnfs-nas-static-pv
spec:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 50Gi
  csi:
    driver: nasplugin.csi.alibabacloud.com
    fsType: nfs
    volumeAttributes:
      containerNetworkFileSystem: cnfs-nas-filesystem # 引用名称为cnfs-nas-filesystem的CNFS对象。
      mountProtocol: nfs
      path: /
      volumeAs: subpath
      volumeCapacity: "true"
    volumeHandle: cnfs-nas-static-pv
  mountOptions:
  - nolock,tcp,noresvport
  - vers=3
  persistentVolumeReclaimPolicy: Delete
  storageClassName: cnfs-nas-sc
  volumeMode: Filesystem
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: cnfs-nas-static-pvc
  namespace: default
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 50Gi
  storageClassName: cnfs-nas-sc
  volumeMode: Filesystem
  volumeName: cnfs-nas-static-pv # 引用名称为cnfs-nas-static-pv的PV对象。
status:
  accessModes:
  - ReadWriteOnce
  capacity:
    storage: 50Gi
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: cnfs-nas-static-sts
  labels:
    app: busybox
spec:
  serviceName: "busybox"
  replicas: 2
  selector:
    matchLabels:
      app: busybox
  template:
    metadata:
      labels:
        app: busybox
    spec:
      containers:
      - name: busybox
        image: busybox
        command: ["/bin/sh"]
        args: ["-c", "sleep 3600;"]
        volumeMounts:
        - mountPath: "/data"
          name: cnfs-nas-static-pvc
      volumes:
      - name: cnfs-nas-static-pvc
        persistentVolumeClaim:
          claimName: cnfs-nas-static-pvc # 引用名称为cnfs-nas-static-pvc的PVC对象。
EOF

步骤二:查看挂载情况

执行以下命令,查看挂载情况。

kubectl exec cnfs-nas-static-sts-0 -- mount |grep nfs

预期输出:

971134b0e8-****.cn-zhangjiakou.nas.aliyuncs.com:/ on /data type nfs (rw,nosuid,nodev,relatime,user_id=0,group_id=0,default_permissions,allow_other)

预期输出显示有挂载点,说明挂载成功。

步骤三:查看持久化数据是否写入成功

执行以下命令,写入1 G的临时文件。

kubectl exec cnfs-nas-static-sts-0 -ti -- sh -c 'dd if=/dev/zero of=/data/1G.tmpfile bs=1G count=1;'

执行以下命令,查看1 GB的临时文件是否写入成功。

kubectl exec cnfs-nas-static-sts-0 -- ls -arlth /data

预期输出:

total 1G
-rw-r--r--    1 root     root        1.0G Dec 15 12:11 1G.tmpfile

预期输出表明,在/data下已经成功写入1 G的临时文件1G.tmpfile。

步骤四:查看写入的数据是否在其他Pod内共享

执行以下命令,查看写入的1 G的临时文件是否在其他Pod cnfs-nas-static-sts-1中共享。

kubectl exec cnfs-nas-static-sts-1 -- ls -arlth /data

预期输出:

total 1G
-rw-r--r--    1 root     root        1.0G Dec 15 12:11 1G.tmpfile

预期输出表明,在Pod cnfs-nas-static-sts-0与Pod cnfs-nas-static-sts-1中共享写入了1 GB的临时文件1G.tmpfile。

说明

在不同的Pod中写入共享存储数据时,CNFS不保证数据的一致性,避免多次写入同一文件,以免对文件造成损坏。

相关文档

  • 如果您需要在多个应用或Pod之间挂载NAS文件系统中的不同目录以实现存储隔离,请参见使用CNFS管理NAS隔离存储卷(推荐)。

  • 如果您需要实现NAS存储卷的使用率高于某个阈值时触发自动扩容,请参见使用CNFS自动扩容NAS存储卷。

相关文章

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号