前言
Fluid 基础功能中的数据编排能力是本文解析的重点。这涉及到 Fluid 架构与 Kubernetes CSI Driver 的相关知识。建议读者先对相关概念有一定了解。为了便于理解,下文以 JuiceFS 作为后端 runtime 引擎进行说明。
原理概述
Fluid 的数据编排能力旨在云原生环境中简化远端存储的使用。用户只需声明几个对象,就能像使用本地存储一样方便,无需关心后端繁琐的配置、数据存储或拉取过程,甚至不需要了解具体的存储实现方式。
该能力主要依赖 DataSet、Runtime 以及对应的 Controller 组件来实现。 DataSet 用于告知 Fluid 数据的位置。例如对于 JuiceFS,它指向 JuiceFS 文件系统下的子目录。 Runtime 根据后端引擎不同有多种形式,如 AlluxioRuntime、JuiceFSRuntime 等,它们都是 Kubernetes 的 CRD。以 JuiceFSRuntime 为例,它声明了 JuiceFS 的最小化集群配置,包括 Worker 副本数、缓存介质(MEM、SSD、HDD)及大小等。Runtime Controller 会根据这些声明部署相应的组件。 用户使用时,只需在 Pod 中引用同名的 PVC 即可。
工作流程梳理

详细流程解析
一、用户创建 Dataset
首先定义 Dataset 资源,指定挂载点信息。
apiVersion: data.fluid.io/v1alpha1
kind: Dataset
metadata:
name: jfsdemo
spec:
mounts:
- name: test
mountPoint: "juicefs:///demo"
options:
bucket: "<bucket>"
mounts 字段说明:
name:对应 JuiceFS 中创建的文件系统名称。mountPoint:指向 JuiceFS 的子目录,以juicefs://开头。例如juicefs:///demo代表/demo子目录。options.bucket:Bucket URL。如果使用 S3 作为对象存储,此处填写对象存储 URL;若使用 MinIO、MySQL 等其他后端,则填写对应的连接地址。
二、Dataset Controller 处理 Dataset
Controller 监听到 Dataset 被创建后,会将其状态设置为 NotBound,表示尚未与任何 Runtime 绑定。
三、用户创建 JuiceFSRuntime
接着定义 Runtime 资源,配置缓存策略。

