使用CNFS管理NAS共享存储卷(推荐)
ACK支持以NAS共享存储卷的方式挂载和使用CNFS。共享存储卷是指CNFS管理的NAS中,每个目录可以对应多个存储卷。当您的多个Kubernetes应用或者Pod挂载相同NAS文件系统的同一个目录时, 可以使用CNFS管理共享存储卷的方式。本文介绍如何使用CNFS管理NAS共享存储卷。
索引
前提条件
已开通文件存储NAS服务。
首次登录文件存储NAS产品详情页时,按照页面引导开通服务。
已创建Kubernetes集群,Kubernetes版本为v1.20及以上,且存储插件选择为CSI。具体操作,请参见创建Kubernetes托管版集群。
CSI-Plugin和CSI-Provisioner组件版本不低于v1.24.11-5221f79-aliyun。关于升级CSI-Plugin和CSI-Provisioner组件的操作,请参见安装与升级CSI组件。
storage-operator组件版本不低于v1.24.105-825188d-aliyun。关于升级storage-operator组件的操作,请参见管理组件。
已通过kubectl工具连接Kubernetes集群。具体操作,请参见获取集群KubeConfig并通过kubectl工具连接集群。
背景信息
关于什么是容器网络文件系统CNFS及如何使用CNFS托管NAS文件系统,请参见容器网络文件系统CNFS概述、通过CNFS方式使用NAS文件系统。
下文以StatefulSet类型应用为例,介绍如何使用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
写入挂载点中。
步骤二:查看挂载情况
执行以下命令,查看挂载情况。
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 G的临时文件是否写入成功。
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 G的临时文件1G.tmpfile
。
在不同Pod中写入共享存储数据时,CNFS不保证数据的一致性,避免多次写入同一文件,对文件造成损坏。