关于ack:基于-ACK-Fluid-的混合云优化数据访问四将第三方存储目录挂载到-Kubernetes提升效率和标准化

107次阅读

共计 5125 个字符,预计需要花费 13 分钟才能阅读完成。

前文回顾:

本系列将介绍如何基于 ACK Fluid 反对和优化混合云的数据拜访场景,相干文章请参考:

《基于 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 的混合云优化数据拜访(三):减速第三方存储的读拜访,降本增效并行》一样的性能,老本,自动化和无缓存数据落盘的长处。

总结: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 为例,执行如下命令。

$ sudo yum install sshfs -y

2.2 登录 sshfs 服务器 192.168.0.1,执行如下命令,在 /mnt 目录下创立一个新的子目录作为主机目录挂载点,并且创立一个测试文件。

$ mkdir /mnt/demo-remote-fs
$ cd /mnt/demo-remote-fs
$ dd if=/dev/zero of=/mnt/demo-remote-fs/allzero-demo count=1024 bs=10M

2.3 执行如下命令,为 sshfs 的客户端 192.168.0.2 和 192.168.0.3 两个节点创立相应的主机目录。

$ mkdir /mnt/demo-remote-fs
$ sshfs 192.168.0.1:/mnt/demo-remote-fs /mnt/demo-remote-fs
$ ls /mnt/demo-remote-fs

2.4 执行如下命令,为 192.168.0.2 和 192.168.0.3 节点打标签。标签 demo-remote-fs=true 用于设置 JindoRuntime 的 Master 和 Worker 组件的节点调度约束条件。

$ kubectl label node 192.168.0.2 demo-remote-fs=true$ 
kubectl label node 192.168.0.3 demo-remote-fs=true

2.5 抉择 192.168.0.2 执行如下命令,拜访数据,评估文件拜访性能,拷贝 10G 文件的工夫须要 1m5.889s。

$  ls -lh /mnt/demo-remote-fs/
total 10G
-rwxrwxr-x 1 root root 10G Aug 13 10:07 allzero-demo
$ time cat /mnt/demo-remote-fs/allzero-demo > /dev/null

real  1m5.889s
user  0m0.086s
sys  0m3.281s

3. 创立 Fluid Dataset 和 JindoRuntime

应用如下 YAML,创立 dataset.yaml 文件。

下方 dataset.yaml 配置文件中蕴含两个待创立的 Fluid 资源对象,别离是 Dataset 和 JindoRuntime。

  • Dataset:所需挂载的主机目录信息。
  • JindoRuntime:待启动的 JindoFS 分布式缓存系统配置,包含缓存零碎 Worker 组件正本数,以及每个 Worker 组件最大可用的缓存容量等。
apiVersion: data.fluid.io/v1alpha1
kind: Dataset
metadata:
  name: hostpath-demo-dataset
spec:
  mounts: 
    - mountPoint: local:///mnt/demo-remote-fs
      name: data
      path: /
  accessModes:
    - ReadOnlyMany
---
apiVersion: data.fluid.io/v1alpha1
kind: JindoRuntime
metadata:
  name: hostpath-demo-dataset
spec:
  master:
    nodeSelector:
      demo-remote-fs: "true"
  worker:
    nodeSelector:
      demo-remote-fs: "true"
  fuse:
    nodeSelector:
      demo-remote-fs: "true"
  replicas: 2
  tieredstore:
    levels:
      - mediumtype: MEM
        path: /dev/shm
        quota: 10Gi
        high: "0.99"
        low: "0.99"

配置文件中资源对象的具体参数阐明如下。

3.1 执行如下命令,创立 Dataset 和 JindoRuntime 资源对象。

$ kubectl create -f dataset.yaml

3.2 执行如下命令,查看 Dataset 的部署状况。

$ kubectl get dataset hostpath-demo-dataset

预期输入:

NAME                    UFS TOTAL SIZE   CACHED   CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
hostpath-demo-dataset   10.00GiB         0.00B    20.00GiB         0.0%                Bound   47s

3.3 Dataset 处于 Bound 状态,表明 JindoFS 缓存零碎已在集群内失常启动,利用 Pod 可失常拜访 Dataset 中定义的数据。

4. 创立 DataLoad 执行缓存预热

因为首次拜访无奈命中数据缓存,可能导致利用 Pod 的数据拜访效率较低。Fluid 提供了 DataLoad 缓存预热操作晋升首次数据拜访的效率。

4.1 创立 dataload.yaml 文件,代码示例如下。

apiVersion: data.fluid.io/v1alpha1
kind: DataLoad
metadata:
  name: dataset-warmup
spec:
  dataset:
    name: hostpath-demo-dataset
    namespace: default
  loadMetadata: true
  target:
    - path: /
      replicas: 1

上述资源对象的具体参数阐明如下所示。

4.2 执行如下命令,创立 DataLoad 对象。

$ kubectl create -f dataload.yaml

4.3 执行如下命令,查看 DataLoad 状态。

$ kubectl get dataload dataset-warmup

预期输入:

NAME             DATASET                 PHASE      AGE   DURATION
dataset-warmup   hostpath-demo-dataset   Complete   96s   1m2s

4.4 执行如下命令,查看数据缓存状态。

$ kubectl get dataset

预期输入:

NAME                    UFS TOTAL SIZE   CACHED     CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
hostpath-demo-dataset   10.00GiB         10.00GiB   20.00GiB         100.0%              Bound   157m

DataLoad 缓存预热操作实现后,数据集的已缓存数据量 CACHED 已更新为整个数据集的大小,代表整个数据集已被缓存,缓存百分比 CACHED PERCENTAGE 为 100.0%。

5. 查看数据预热后的拜访性能

5.1 应用如下 YAML,创立 pod.yaml 文件,并批改 YAML 文件中的 claimName 名称与本例子中已创立的 Dataset 名称雷同。

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
    - name: nginx
      image: nginx
      command:
      - "bash"
      - "-c"
      - "sleep inf"
      volumeMounts:
        - mountPath: /data
          name: data-vol
  volumes:
    - name: data-vol
      persistentVolumeClaim:
        claimName: hostpath-demo-dataset # 名称须要与 Dataset 雷同。

5.2 执行如下命令,创立利用 Pod。

kubectl create -f pod.yaml

5.3 执行如下命令,登录 Pod 拜访数据。

$ kubectl exec -it nginx bash

预期输入,能够拷贝 10G 文件的工夫须要 0m8.629s,是 sshfs 间接近程拷贝耗时(1m5.889s)的 1/8:

root@nginx:/# ls -lh /data
total 10G
-rwxrwxr-x 1 root root 10G Aug 13 10:07 allzero-demo
root@nginx:/# time cat /data/allzero-demo > /dev/null

real  0m8.629s
user  0m0.031s
sys  0m3.594s

5.4 清理利用 Pod

$ kubectl delete po nginx

相干链接:

[1] PV 主机目录通用减速能力

https://help.aliyun.com/zh/ack/cloud-native-ai-suite/user-gui…

[2] 创立 ACK Pro 版集群

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/…

[3] 装置云原生 AI 套件

https://help.aliyun.com/zh/ack/cloud-native-ai-suite/user-gui…

[4] 通过 kubectl 工具连贯集群

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/…

作者:车漾

点击立刻收费试用云产品 开启云上实际之旅!

原文链接

本文为阿里云原创内容,未经容许不得转载。

正文完
 0