拥抱云原生,Fluid 结合 JindoFSx 存储加速系统:加速对象存储使用 S3 协议§

JindoFSx 提供了访问 S3 协议的能力,可以通过配置 S3 作为 JindoFSx 的后端存储,使 Fluid 通过 JindoFSx 来访问 S3 上的数据,同时 JindoFSx 也提供了对 S3 上的数据以及元数据的缓存加速功能。

本文档展示了如何在 Fluid 中以声明式的方式完成 JindoFSx 部署,对接 S3 数据源(包括提供 S3 兼容的所有对象存储)。

创建命名空间§

kubectl create ns fluid-system

下载 Fluid 安装包§

使用 Helm 安装 Fluid§

helm install --set runtime.jindo.enabled=true fluid fluid-<version>.tgz

查看 Fluid 的运行状态§

$ kubectl get pod -n fluid-system
NAME                                         READY   STATUS    RESTARTS   AGE
csi-nodeplugin-fluid-2mfcr                   2/2     Running   0          108s
csi-nodeplugin-fluid-l7lv6                   2/2     Running   0          108s
dataset-controller-5465c4bbf9-5ds5p          1/1     Running   0          108s
jindoruntime-controller-654fb74447-cldsv     1/1     Running   0          108s

其中 csi-nodeplugin-fluid-xx 的数量应该与 K8S 集群中节点node的数量相同。

创建 dataset 和 JindoRuntime§

创建一个 resource.yaml 文件里面包含两部分:

  • 首先包含数据集及 ufs 的 dataset 信息,创建一个 Dataset CRD 对象,其中描述了数据集的来源。
  • 接下来需要创建一个 JindoRuntime,相当于启动一个 JindoFSx 的集群来提供缓存服务。
apiVersion: data.fluid.io/v1alpha1
kind: Dataset
metadata:
  name: s3
spec:
  mounts:
    - mountPoint: s3://<bucket>/<dir>
      options:
        fs.s3.accessKeyId: xxx
        fs.s3.accessKeySecret: xxx
        fs.s3.endpoint: s3.ap-east-1.amazonaws.com
        fs.s3.region: ap-east-1
      name: s3
      path: /
  accessModes:
    - ReadOnlyMany
---
apiVersion: data.fluid.io/v1alpha1
kind: JindoRuntime
metadata:
  name: s3
spec:
  replicas: 2
  tieredstore:
    levels:
      - mediumtype: MEM
        path: /dev/shm
        quota: 100Gi
        high: "0.9"
        low: "0.8"
  • mountPoint:表示挂载 s3 的路径,支持标准 s3 协议。
  • accessModes: 可选 ReadOnlyMany / ReadWriteMany,前者代表只读,后者代表可读写
  • replicas:表示创建 JindoFSx 集群的 worker 的数量。
  • mediumtype: JindoFSx 暂只支持HDD/SSD/MEM中的其中一种。
  • path:存储路径,当选择MEM做缓存也需要一块盘来存储log等文件。
  • quota:缓存最大容量,单位Gi。
  • high:水位上限大小 / low: 水位下限大小。

创建 JindoRuntime

kubectl create -f resource.yaml

查看 dataset 的情况

$ kubectl get dataset hadoop
NAME     UFS TOTAL SIZE   CACHED   CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
s3        210MiB       0.00B    180.00GiB              0.0%          Bound   1h

执行 create 命令

$ kubectl create -f runtime.yaml

查看 dataset 状态§

$ kubectl get dataset hadoop
NAME     UFS TOTAL SIZE   CACHED   CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
s3     180.01GiB      0.00B      261.00GiB            0.0%          Bound   62m

检查 PV,PVC 创建情况§

$ kubectl get pv,pvc
NAME                      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM            STORAGECLASS   REASON   AGE
persistentvolume/s3   100Gi      RWX            Retain           Bound    default/hadoop                           58m

NAME                           STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/s3   Bound    hadoop   100Gi      RWX                           58m