基于 ACK Fluid 的混合云优化数据访问(四):将第三方存储目录挂载到 Kubernetes,提升效率和标准化
作者:车漾
前文回顾:
本系列将介绍如何基于 ACK Fluid 支持和优化混合云的数据访问场景,相关文章请参考:
-基于 ACK Fluid 的混合云优化数据访问(一):场景与架构
-基于 ACK Fluid 的混合云优化数据访问(二):搭建弹性计算实例与第三方存储的桥梁
-基于 ACK Fluid 的混合云优化数据访问(三):加速第三方存储的读访问,降本增效并行
在前一篇文章《加速第三方存储的读访问,降本增效并行》中,介绍如何加速第三方存储访问,实现更好的性能,更低的成本同时降低对专线稳定性的依赖。
还有一些客户的场景下,出于历史原因和容器存储接口开发维护的成本,并没有选择使用标准的 CSI 接口,而是使用非容器化的手段,比如自动化脚本。但是一旦拥抱云,就需要考虑如何和基于标准接口的云服务对接的问题。
而本文将重点介绍如何通过 ACK Fluid 实现第三方存储主机目录挂载 Kubernetes 化,更加标准并加速提效。
概述
有许多企业由于历史原因和技术云下存储选择没有支持 CSI 协议,只支持以主机目录的方式通过 ansible 等运维工具挂载,一方面存在与 Kubernetes 标准化平台的对接的挑战,另一方面也需要应对与上篇文章类似的性能和成本的问题:
缺少标准化,上云困难: 主机目录挂载的模式由于无法被 Kubernetes 感知和调度,很难被容器化工作负载使用和管理。
缺少数据隔离性: 由于整个目录都被挂载到主机上,并被所有的工作负载访问,导致数据全局可见。
数据访问在成本,性能和可用性上有何场景 2 相同的需求,因此不再赘述。
ACK Fluid 提供了基于 JindoRuntime 的 PV 主机目录通用加速能力 [ 1] ,直接支持主机目录挂载可以原生,简单,快速,安全的获得通过分布式缓存实现数据访问加速能力。
1. 将传统架构迁移到云原生适配架构: 将主机目录挂载模式变化为 Kubernetes 可以管理的 CSI 协议下的 PV 存储卷,方便通过标准化协议与公共云相结合。
2. 传统架构迁移低成本: 只需要实现主机目录挂载可以立即使用,无需额外开发;只需要在部署时刻将 Hostpath 协议转换成 PV 存储卷。
3. 数据可隔离: 通过 Fluid 的子数据集模式可以隔离不同用户对于线下存储不同目录的可见性。
4.可以提供和《加速第三方存储的读访问,降本增效并行》一样的性能,成本,自动化和无缓存数据落盘的优点。
总结: ACK Fluid 为云上计算访问第三方存储的主机目录挂载方式提供了开箱即用,高性能,低成本,自动化和无数据落盘的收益。
演示
1. 前提条件
已创建 ACK Pro 版集群,且集群版本为 1.18 及以上。具体操作,请参见创建 ACK Pro 版集群 [ 2] 。
已安装云原生 AI 套件并部署 ack-fluid 组件。重要: 若您已安装开源 Fluid,请卸载后再部署 ack-fluid 组件。
未安装云原生 AI 套件:安装时开启 Fluid 数据加速。具体操作,请参见安装云原生 AI 套件 [ 3] 。
已安装云原生 AI 套件:在容器服务管理控制台的云原生 AI 套件页面部署 ack-fluid。
已通过 kubectl 连接 ACK 集群。具体操作,请参见通过 kubectl 工具连接集群 [ 4] 。
已创建需要访问存储系统对应的 PV 存储卷和 PVC 存储卷声明。在 Kubernetes 环境中,不同的存储系统有不同的存储卷创建方式,为保证存储系统与 Kubernetes 集群的连接稳定,请根据对应存储系统的官方文档进行准备。
2. 准备主机目录挂载点
本示例中通过 sshfs 模拟第三方存储通过 fluid 转化为数据卷声明,并且对其实现访问加速。
2.1 首先登录三台机器 192.168.0.1,192.168.0.2,192.168.0.3, 分别安装 sshfs 服务,在本例子中以 CentOS 为例,执行如下命令。
2.2 登录 sshfs 服务器 192.168.0.1,执行如下命令,在 /mnt 目录下创建一个新的子目录作为主机目录挂载点,并且创建一个测试文件。
2.3 执行如下命令,为 sshfs 的客户端 192.168.0.2 和 192.168.0.3 两个节点创建相应的主机目录。
2.4 执行如下命令,为 192.168.0.2 和 192.168.0.3 节点打标签。标签 demo-remote-fs=true 用于设置 JindoRuntime 的 Master 和 Worker 组件的节点调度约束条件。
2.5 选择 192.168.0.2 执行如下命令,访问数据,评估文件访问性能,拷贝 10G 文件的时间需要 1m5.889s。
3. 创建 Fluid Dataset 和 JindoRuntime
使用如下 YAML,创建 dataset.yaml 文件。
下方 dataset.yaml 配置文件中包含两个待创建的 Fluid 资源对象,分别是 Dataset 和 JindoRuntime。
Dataset:所需挂载的主机目录信息。
JindoRuntime:待启动的 JindoFS 分布式缓存系统配置,包括缓存系统 Worker 组件副本数,以及每个 Worker 组件最大可用的缓存容量等。
配置文件中资源对象的详细参数说明如下。
3.1 执行如下命令,创建 Dataset 和 JindoRuntime 资源对象。
3.2 执行如下命令,查看 Dataset 的部署情况。
预期输出:
3.3 Dataset 处于 Bound 状态,表明 JindoFS 缓存系统已在集群内正常启动,应用 Pod 可正常访问 Dataset 中定义的数据。
4. 创建 DataLoad 执行缓存预热
由于首次访问无法命中数据缓存,可能导致应用 Pod 的数据访问效率较低。Fluid 提供了 DataLoad 缓存预热操作提升首次数据访问的效率。
4.1 创建 dataload.yaml 文件,代码示例如下。
上述资源对象的详细参数说明如下所示。
4.2 执行如下命令,创建 DataLoad 对象。
4.3 执行如下命令,查看 DataLoad 状态。
预期输出:
4.4 执行如下命令,查看数据缓存状态。
预期输出:
DataLoad 缓存预热操作完成后,数据集的已缓存数据量 CACHED 已更新为整个数据集的大小,代表整个数据集已被缓存,缓存百分比 CACHED PERCENTAGE 为 100.0%。
5. 查看数据预热后的访问性能
5.1 使用如下 YAML,创建 pod.yaml 文件,并修改 YAML 文件中的 claimName 名称与本例子中已创建的 Dataset 名称相同。
5.2 执行如下命令,创建应用 Pod。
5.3 执行如下命令,登录 Pod 访问数据。
预期输出,可以拷贝 10G 文件的时间需要 0m8.629s,是 sshfs 直接远程拷贝耗时(1m5.889s)的 1/8:
5.4 清理应用 Pod
相关链接:
[1] PV 主机目录通用加速能力
[2] 创建 ACK Pro 版集群
[3] 安装云原生 AI 套件
[4] 通过 kubectl 工具连接集群
版权声明: 本文为 InfoQ 作者【阿里巴巴云原生】的原创文章。
原文链接:【http://xie.infoq.cn/article/2ffa19636b3cce7c1c4bc214e】。文章转载请联系作者。
评论