在Lite Cluster挂载SFS Turbo
场景描述
当本地服务器磁盘空间不足,无法满足业务增长需求时,将数据盘挂载到Lite Cluster资源池,可以实现存储资源的动态分配,满足存储资源的灵活调度、高效利用和安全访问需求。
华为云高性能弹性文件服务(Scalable File Service Turbo,SFS Turbo)提供按需扩展的高性能文件存储(NAS),能够满足大规模数据读写需求,且支持多个计算节点共享同一文件系统。在Lite Cluster挂载SFS Turbo,可以显著提升数据访问性能,可以在Lite Cluster的多个节点之间实现数据共享,能够提升资源利用率和任务协作效率,适用于高性能计算和分布式训练场景。
本文档以Ipv4为例介绍了在ModelArts Lite Cluster环境下挂载SFS Turbo文件系统的过程,以及在主机及Kubernetes容器中挂载使用SFS Turbo文件系统的过程。将Lite Cluster与待挂载的SFS Turbo文件系统建立在同一个VPC子网中。
注意事项
用户需合理规划资源池及SFS Turbo网段,避免ModelArts Lite Cluster节点与SFS Turbo文件系统网段冲突。具体规则:
当SFS Turbo文件系统选择192.168.x.x开头的VPC网段时,资源池节点需避免172.16.0.0/16的网段。
当SFS Turbo文件系统选择172.x.x.x开头的VPC网段时,资源池节点需避免192.168.0.0/16的网段。
当SFS Turbo文件系统选择10.x.x.x开头的VPC网段时,资源池节点需避免172.16.0.0/16的网段。
计费影响
- 在开通Lite Cluster资源后,会产生计算资源的计费。Lite Cluster资源池仅支持包年/包月计费模式,具体内容如表1所示。
表1 计费项 计费项
计费项说明
适用的计费模式
计费公式
计算资源
专属资源池
使用计算资源的用量。
具体费用可参见ModelArts价格详情。
包年/包月
规格单价 * 计算节点个数 * 购买时长
- 购买Cluster资源池时,需要选择CCE集群,具体费用请参考CCE计费详情。
- 挂载的SFS Turbo文件系统按购买时选择的存储容量和时长收费,详情请见SFS 计费说明。
步骤一:创建VPC
在Lite Cluster挂载SFS Turbo,需要将Lite Cluster与待挂载的SFS Turbo文件系统建立在同一个VPC子网中,因此需要创建一个VPC子网。
- 进入创建虚拟私有云页面。
- 在“创建虚拟私有云”页面,根据界面提示配置VPC和子网的参数。
表2 虚拟私有云部分参数说明 参数
说明
样例
IPv4网段
Lite Cluster挂载Sfs Turbo场景下,
建议您使用RFC 1918中指定的私有IPv4地址范围,作为VPC的网段,具体如下:
- 10.0.0.0/8-24:IP地址范围为10.0.0.0~10.255.255.255,掩码范围为8~24。
- 172.16.0.0/12-24:IP地址范围为172.16.0.0~172.31.255.255,掩码范围为12~24。
- 192.168.0.0/16-24:IP地址范围为192.168.0.0-192.168.255.255,掩码范围为16~24。
192.168.0.0/16
表3 子网部分参数说明 参数
说明
取值样例
子网网段
在未开启IPv4/IPv6双栈的区域,显示此参数。
设置VPC子网的IPv4网段范围,参数填写说明请参见“子网IPv4网段”。
192.168.0.0/24
子网IPv4网段
在开启IPv4/IPv6双栈的区域,显示此参数。
设置子网的IPv4网段范围,子网是VPC内的IP地址块,可以将VPC的网段分成若干块,建议您规划子网时,遵循以下原则:
- 子网内可用IP数量:子网创建成功后,不支持修改网段,请您结合业务所需的IP地址数量,提前合理规划好子网网段。
- 子网网段不能太小,需要确保子网内可用IP地址数量可以满足业务需求。子网网段中第一个地址和后三个地址为系统预留地址,不能供实际业务使用,比如子网(10.0.0.0/24)中,10.0.0.1为网关地址、10.0.0.253为系统接口、10.0.0.254为DHCP使用、10.0.0.255为广播地址。
- 子网网段也不能太大,以免后续扩展新的业务时,VPC内可用网段不够,无法再创建新的子网。
- 子网网段避免冲突:如果子网所在的VPC与其他VPC、或者VPC与云下数据中心需要通信时,则VPC子网网段和网络对端网段不能相同,否则无法正常通信。
如果网络两端的子网网段已经相同,您可以创建新的子网,请参见为虚拟私有云创建新的子网。
子网的网段必须在VPC网段范围内,子网网段的掩码长度范围为“子网所在VPC的掩码~29”,比如VPC网段为10.0.0.0/16,掩码为16,则子网的掩码可在16~29范围内选择。
关于VPC子网规划更详细的说明,请参见虚拟私有云和子网规划建议。
192.168.0.0/24
- 参数设置完成后,单击“立即创建”。
步骤二:创建SFS Turbo文件系统
创建待挂载的SFS Turbo文件系统,网络使用步骤一:创建VPC中创建的VPC。
- 登录弹性文件服务SFS控制台,在左侧导航栏,选择“SFS Turbo”。在页面右上角单击“创建文件系统”。
- 如图2所示,根据界面提示配置参数。
- 配置完成后,单击“立即创建”。
- 核对文件系统信息,确认无误后单击“提交”。
- 根据页面提示,完成创建后,返回文件系统列表页面查看文件系统状态。
步骤三:创建CCE
由于Lite Cluster资源池依赖于CCE集群来提供容器化的运行环境,并且CCE集群为Lite资源池提供必要的计算、存储和网络资源,所以购买Cluster资源池时,需要选择CCE集群。
如果您没有可用的CCE集群,可参考购买Standard/Turbo集群进行购买,集群配套版本请参考不同机型对应的软件配套版本。
- 登录CCE控制台。
- 如果您的账号还未创建过集群,请在引导页面中单击页面上方的“购买集群”。
- 如果您的账号已经创建过集群,请在左侧菜单栏选择集群管理,单击右上角“购买集群”。
- 对集群的基础信息进行配置。
更多参数说明请参见购买Standard/Turbo集群。
图3 购买CCE集群 - 单击“下一步:确认配置”,显示集群资源清单,确认无误后,单击“提交”。
集群创建预计需要5-10分钟,您可以单击“返回集群管理”进行其他操作或单击“查看集群事件列表”后查看集群详情。
步骤四:创建Lite Cluster资源
使用步骤三:创建CCE已创建的CCE集群创建Lite Cluster资源。
- 登录ModelArts管理控制台,在左侧菜单栏中选择 ,进入“轻量算力集群 (Lite Cluster)”页面。
- 在“轻量算力集群 (Lite Cluster)”页面,单击“购买轻量算力集群”,进入购买轻量算力集群界面填写参数。
- 单击“立即购买”确认规格。产品规格和协议许可确认无误后,单击“提交”,即可创建Lite Cluster资源池。
当资源池创建成功后,资源池的状态会变成“运行中”。单击集群资源名称,进入资源详情页。确认购买的规格是否正确。图4 查看资源详情
步骤五:Lite Cluster节点主机挂载SFS Turbo文件系统
- 在弹性文件服务SFS控制台左侧导航栏选择“SFS Turbo”,单击步骤二:创建SFS Turbo文件系统创建的SFS Turbo文件系统名称,进入SFS Turbo文件系统详情界面,复制“Linux挂载命令”。
图5 复制Linux挂载命令
- 通过Xshell、MobaXterm等bash工具登录Lite Cluster节点,执行命令创建待验证挂载的文件夹。
mkdir /mnt/sfs_turbo
- 执行前面步骤复制的Linux挂载命令。
mount -t nfs -o vers=3,nolock,proto=tcp,noresvport xxxx.sfsturbo.internal:/ /mnt/sfs_turbo
执行df -h,查看SFS 文件系统挂载信息。
如图所示,此时SFS Turbo文件系统已成功挂载到节点主机的/mnt/sfs_turbo目录。
图6 查看挂载信息
步骤六:Lite Cluster k8s集群工作负载挂载SFS Turbo文件系统
通过Kubernetes NFS可以将SFS Turbo文件系统挂载到工作负载中。
- 在弹性文件服务SFS控制台左侧导航栏选择“SFS Turbo”,单击步骤二:创建SFS Turbo文件系统创建的SFS Turbo文件系统名称,进入SFS Turbo文件系统详情界面,复制“共享路径”。
xxxxx.sfsturbo.internal:/
该路径以":"分割为k8s nfs挂载需要的两个参数,其中
“xxxxx.sfsturbo.internal”为工作负载nfs挂载参数“nfs.server”。
“/”为工作负载nfs挂载参数“nfs.path”。
图7 复制共享路径 - 通过Xshell、MobaXterm等bash工具登录Lite Cluster节点,创建dep.yaml文件,内容如下。
kind: Deployment apiVersion: apps/v1 metadata: name: testlite2sfsturbo namespace: default spec: replicas: 1 selector: matchLabels: app: testlite2sfsturbo version: v1 template: metadata: labels: app: testlite2sfsturbo version: v1 spec: volumes: - name: nfs0 nfs: server: xxxxx.sfsturbo.internal ## 填写sfsturbo文件系统共享路径中的server信息 path: / containers: - name: pod0 image: swr.cn-southwest-2.myhuaweicloud.com/hwofficial/everest:2.4.134 ## 镜像地址 command: - /bin/bash - '-c' - while true; do echo hello; sleep 10; done env: - name: PAAS_APP_NAME value: testlite2sfsturbo - name: PAAS_NAMESPACE value: default - name: PAAS_PROJECT_ID value: xxxx resources: limits: cpu: 250m memory: 2000Mi requests: cpu: 250m memory: 2000Mi volumeMounts: - name: nfs0 mountPath: /mnt/sfsturbo/test imagePullPolicy: IfNotPresent
- 执行kubectl apply -f dep.yaml创建工作负载。
- 执行kubectl get pod 查看pod容器组启动成功。
- 执行kubectl exec -it {pod_name} -- bash 登录容器内。
- 执行df -h
如图所示,此时SFS Turbo文件系统已成功挂载到k8s容器内的/mnt/sfs_turbo/test目录。
图8 查看挂载信息