# AI数据加速引擎插件
在处理AI和大数据任务时，Kubernetes面临计算存储分离导致的高延迟和带宽浪费、数据管理不足、存储接口碎片化，以及缺乏智能数据感知与调度等核心挑战。为此，CCE Standard/Turbo集群基于[Fluid](https://fluid-cloudnative.github.io/)提供AI数据加速引擎插件。该插件提供数据集抽象、数据编排和应用编排等能力，旨在通过透明的数据管理和优化调度，帮助AI和大数据应用高效利用任何存储的数据，而无需修改现有应用。
#### Fluid概述
Fluid是云原生领域的一款分布式数据集编排与加速引擎，专为大数据和AI应用设计。它旨在通过透明的数据管理和优化调度，帮助AI和大数据应用高效利用任何存储的数据，而无需修改现有应用。Fluid支持自动化的数据调度、缓存加速和弹性扩展，提升数据访问效率，确保在大规模分布式环境中实现高效的存储和计算协同。
#### 基本概念
- Dataset：是Fluid中定义的数据集资源，用于描述数据集的元数据和属性。它允许用户定义数据集的位置、格式、版本、数据访问权限等信息。Dataset可以与不同的存储引擎（如Alluxio、JuiceFS等）结合使用，确保数据的统一管理和高效访问。
- Dataset Operation：指的是对Dataset执行的数据操作任务，例如数据预热、数据迁移、数据缓存清理等。这些操作通过Fluid的CRD进行定义和管理，帮助用户优化数据访问性能或维护数据生命周期。
- Runtime：是Fluid中的自定义资源，用于描述应用程序的运行时环境。它表示数据处理任务所需的计算资源配置，如内存、CPU、GPU类型、存储需求等。不同的计算任务可以通过Runtime CRD进行管理和调度。

- CSI Mode：是Kubernetes存储管理模式之一，主要关注存储接口的标准化，允许Kubernetes使用各种存储系统（如块存储、文件存储、对象存储等），通过容器存储接口（CSI）来管理存储资源。它通过Pod级别的容器化存储挂载（FUSE Pod），简化了应用与存储的集成，特别适用于持久化存储需求。
- Sidecar Mode：是Kubernetes存储管理模式之一，关注辅助容器模式，通过将辅助容器（FUSE Sidecar Container）与主容器一起部署在同一Pod中，以增强主容器的功能，如文件系统挂载、缓存加速等。该模式轻量级、灵活，适合文件系统挂载和临时存储，但可能带来较大的资源开销。
 
#### Kubernetes集群现有问题
目前，在Kubernetes集群中运行AI和大数据任务面临以下挑战：
- **数据访问瓶颈**：Kubernetes的采用计算存储分离架构实现资源解耦，却因远程数据访问导致显著的性能损耗，尤其在高频读取海量数据的AI训练场景中，网络延迟和带宽限制成为制约计算效率的关键瓶颈。
- **数据管理短板**：Kubernetes通过CSI实现存储资源的基础抽象，但缺失关键的数据管理能力。在机器学习场景中，数据集特征定义、版本控制、权限管理、预处理和I/O加速等核心需求缺乏原生支持，迫使数据科学家构建额外工具链。
- **多形态CSI兼容性问题**：不同Kubernetes形态（原生/边缘/Serverless）对CSI插件的支持存在差异，如Serverless形态通常无法使用第三方CSI插件，导致存储功能受限。
 
#### Fluid功能介绍
为解决云原生场景下计算存储分离架构带来的数据访问延迟高、多源数据管理复杂等痛点，Fluid提供以下功能：
图1Fluid架构图   
![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002643390928.png "点击放大")
- **数据集抽象**：通过Kubernetes原生API，将底层异构存储（如 HDFS、对象存储、分布式文件系统）封装为统一的逻辑数据集（Dataset），屏蔽存储差异，提供透明访问能力。数据集抽象类似一个数据万能适配器，让应用程序能够以统一的API接口访问异构存储系统，无需关注底层存储位置、数据传输路径或加速机制。
- **数据集编排**：通过动态调度缓存引擎（如Alluxio、JuiceFS等）提前将数据缓存到计算节点，减少数据传输距离，提高访问效率。
- **应用编排**：结合Kubernetes调度器，将计算任务优先调度至已缓存数据的节点，减少网络传输开销，提升计算效率。
- **数据自动运维**：通过CRD提供数据预取、迁移、备份等操作，支持一次性、定时、事件驱动等多种触发方式，便于用户集成到自动化运维体系中。
- **数据弹性与调度**：将数据缓存技术和弹性扩缩容、数据亲和性调度能力相结合，提高数据访问性能。
- **CSI兼容**：支持多种环境，可根据环境运行不同的存储客户端，包括原生、边缘、Serverless Kubernetes集群、Kubernetes多集群环境。
 
#### Fluid系统架构
- **架构设计**
  Fluid 的架构基于Kubernetes生态构建，主要包括以下组件：
  图2组件关系图   
  ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002673550791.png "点击放大")
  表1组件说明 
  | 组件                | 说明                                                                                                                                                                                                                                                                                                                                                |
  |:---|:---|
  | Dataset CRD        | 用于定义数据集的来源、访问模式及缓存策略。通过Dataset CRD，用户可以在Kubernetes中创建、更新、删除和监控数据集，便于高效的数据管理。                                                                                                                                                                                                                                                                       |
  | Runtime CRD         | 用于管理底层缓存引擎的生命周期（创建、扩缩容、预热），支持多种分布式缓存系统。                                                                                                                                                                                                                                                                                                           |
  | Dataset Controller   | 负责数据集的生命周期管理，包含绑定缓存引擎。                                                                                                                                                                                                                                                                                                                              |
  | Runtime Controller    | 用于管理和调度与运行时环境相关的资源，包括计算任务和运行时所需的配置，例如根据负载情况自动扩展或缩减缓存节点。                                                                                                                                                                                                                                                                                             |
  | Application Manager | 负责调度和运行使用数据集的应用Pod，分为Scheduler和Webhook两个核心组件。 - Scheduler：通过Runtime获取缓存信息，Scheduler负责将已使用数据集的Pod优先调度到具有数据缓存的节点。  - Webhook：对于无法使用csi-plugin的环境，Webhook负责将PVC替换为FUSE Sidecar，并且确保FUSE容器先启动。   |
  | Runtime Plugin      | 为特定运行时环境提供扩展功能的插件。它可以与Runtime CRD结合使用，提供额外的资源管理、调度优化或执行环境支持。Runtime Plugin使得Kubernetes能够根据不同应用需求定制计算任务的执行方式，优化资源利用和执行效率。                                                                                                                                                                                                                          |
  | CSI Plugin         | 以容器化方式启动，与业务容器解耦，从而独立管理存储资源。同时，它为集群中的存储资源提供可观测性，帮助实时监控存储性能和健康状况。                                                                                                                                                                                                                                                                                   |
     
  
- **数据与计算协同机制**
  - 缓存预热：通过声明式API提前将远程数据加载到缓存引擎，避免首次访问延迟。
  
  - 弹性伸缩：根据数据访问压力动态调整缓存节点规模，例如在训练任务高峰期自动扩容。
  
  - 多协议支持：兼容POSIX、HDFS等接口，适配Spark、TensorFlow等多种计算框架。
   
 
#### Fluid应用场景
Fluid作为Kubernetes原生的分布式数据集编排器和缓存加速器，适用于大数据和AI应用程序等数据密集型应用程序，其常见的应用场景如下：
- **机器学习与AI训练**
  - 加速数据读取：通过内存缓存解决海量小文件读取瓶颈，例如在图像训练中将数据访问延迟降低50%以上。
  
  - 数据版本管理：结合Dataset抽象，支持多版本数据集并行训练与快速切换。
   
- **大数据分析**
  - 跨存储联合查询：将HDFS与对象存储的数据联合缓存，支持Spark任务透明访问多源数据。
  
  - 弹性资源利用：根据分析任务负载动态调整缓存资源，例如夜间缩容以节省成本。
   

- **混合云与边缘计算**
  - 数据迁移优化：在跨集群场景中，通过缓存预热减少数据同步时间。
  
  - 边缘节点加速：将热数据缓存至边缘节点，支持低延迟的实时计算。
   
 
#### 前提条件
- 已创建一个CCE Standard/Turbo集群，且集群版本为v1.28及以上，具体操作请参见[购买Standard/Turbo集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0028.html)。
- 已开通[对象存储服务OBS](https://support.huaweicloud.com/obs/index.html)和[分布式缓存服务DCS](https://support.huaweicloud.com/dcs/index.html)。
 
#### 约束与限制
- AI数据加速引擎插件使用开源社区的模板与镜像，当前插件使用开源社区的模板与镜像，使用过程中可能存在缺陷，我们会定期同步社区版本来修复已知漏洞。请评估是否满足您的业务场景要求。
- 目前，AI数据加速引擎插件仅支持通过[JuiceFS](https://juicefs.com/zh-cn/)底层存储引擎使用数据缓存的能力。[JuiceFS](https://juicefs.com/zh-cn/)是一款云原生分布式文件系统，将对象存储（如OBS）变成高性能本地磁盘，支持多级缓存加速和CCE集群无缝集成，适用于AI 训练、大数据分析等海量数据场景。
- 该插件当前正处于上线阶段，**已发布区域请以控制台实际为准**。
- **该插件处于公测阶段** ，您可体验最新插件特性，但**需要注意该版本的稳定性未得到完全的验证，不适用于CCE服务SLA**。
 
#### 计费说明
- 安装插件时不涉及额外费用。
- 在使用示例中，需要购买Redis实例和OBS桶，涉及一定费用，具体请参见[Redis价格计算器](https://www.huaweicloud.com/pricing/calculator.html#/redis)和[OBS价格计算器](https://www.huaweicloud.com/pricing/calculator.html#/obs)。
 
#### 安装插件
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
2. 在左侧导航栏中选择"插件中心"，在右侧找到**AI数据加速引擎** **插件**，单击"安装"。
3. 在"插件安装"页面右下角单击"安装"。AI数据加速引擎插件状态变为"运行中"时，则说明安装成功。
 
#### 组件说明
表2AI数据加速引擎插件组件 
| 容器组件                    | 说明                                                              | 资源类型        |
|:---|:---|:---|
| application-controller  | 负责使用数据集的应用Pod的调度和运行。通过Runtime获取缓存信息，将使用数据集的Pod优先调度到具有数据缓存的节点。  | Deployment  |
| csi-nodeplugin-fluid      | 表示AI数据加速引擎插件的存储组件，以容器化方式启动，并与业务容器解耦，为集群中的存储资源提供可观测性。             | DaemonSet  |
| dataset-controller        | 负责数据集的生命周期管理，包括绑定缓存引擎。                                           | Deployment |
| fluid-crd-upgrader       | 表示AI数据加速引擎插件的CRD升级组件，在插件升级场景中将根据版本更新CRD。                         | Job        |
| fluid-webhook              | 在无法使用csi-plugin的环境中，Webhook负责将PVC替换为FUSE Sidecar，并确保FUSE容器先启动。 | Deployment  |
| juicefsruntime-controller | 用于管理和调度与JuiceFS运行时环境相关的资源，包括计算任务和运行时所需的配置，例如根据负载情况自动扩展或缩减缓存节点。  | Deployment |
   
#### 使用示例
JuiceFS采用业务数据与元数据分离存储的架构。在本示例中，业务Pod使用的数据存储在OBS中，而JuiceFS生成的元数据则存放在Redis服务中。本示例将展示如何通过JuiceFS将存储在OBS中的数据抽象为数据集，并通过 JuiceFSRuntime 提供给工作负载使用。整体流程如下：
表3示例操作流程 
| 操作步骤                                                   | 说明                                                                                                                                                                                                                                                                               |
|:---|:---|
| [创建OBS桶]                 | 作为底层数据源，存储待Pod使用的业务数据。                                                                                                                                                                                                                                                          |
| [创建Redis实例]              | 用于存储JuiceFS生成的元数据。                                                                                                                                                                                                                                                               |
| [创建Secret]              | 作为JuiceFS访问OBS桶和Redis实例的身份凭证，以便读取和存放相关数据。                                                                                                                                                                                                                                       |
| [创建Dataset资源]          | 用来定义和管理数据的来源和访问策略，确保数据能够正确且高效地被集群中的工作负载使用。 Dataset资源创建完成后，系统将自动创建Worker Pod，用于初始化OBS数据，将其转化为JuiceFS的目录格式。                                                                                                                                         |
| [创建JuiceFSRuntime]          | 将JuiceFS存储卷以高效、可扩展的方式集成到集群中，并提供数据缓存、访问加速和自动化管理能力，确保应用程序能够高效地访问和使用存储在Dataset中的数据。 CCE仅支持CSIMode，因此Dataset中的数据通过FUSE Pod的形式进行缓存，且该FUSE Pod中存储的数据将以PVC的形式挂载在业务Pod中使用。正常情况下，JuiceFSRuntime创建完成后，FUSE Pod、PV以及PVC应自动创建，但FUSE Pod默认为懒启动模式，将随业务Pod一同创建。 |
| [创建业务Pod，直接使用自动创建的PVC和PV] | FUSE Pod将随业务Pod一同创建，其内部数据将通过PVC形式供业务Pod使用。                                                                                                                                                                                                                                         |
   
1. 创建OBS桶，用于存储业务数据。
   
   1. 登录[OBS管理控制台](https://console.huaweicloud.com/console/?locale=zh-cn#/obs/manager/buckets)，在左侧导航栏中选择"桶列表"。
   
   2. 在页面右上角单击"创建桶"，请根据需求配置相关参数，具体示例如下。本示例仅提供必要参数说明，更多参数信息请参见[创建桶](https://support.huaweicloud.com/usermanual-obs/zh-cn_topic_0045829088.html)。
      图3创建桶   
      ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002292257717.png "点击放大")
      
      表4参数说明 
      | 参数        | 示例           | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
      |:---|:---|:---|
      | 桶名称       | juicefs-data | 表示桶的名称，不能与已有桶的名称重复，包括其他用户创建的桶。桶创建成功后，桶名称不支持修改。 命名要求如下： - 长度范围为3到63个字符，支持小写字母、数字、中划线（-）、英文句号（.）。  - 禁止两个英文句号（.）相邻，禁止英文句号（.）和中划线（-）相邻，禁止以英文句号（.）和中划线（-）开头或结尾。  - 禁止使用IP地址。                                                                                                                                                                                                                                           |
      | 数据冗余存储策略 | 多AZ存储        | 表示桶的数据冗余存储策略，创建成功后不支持修改。 - 多AZ存储：数据冗余存储至多个可用区（AZ），可靠性更高。  - 单AZ存储：数据仅存储在单个可用区（AZ），成本更低。   多AZ和单AZ的性能对比请参见[存储类别对比](https://support.huaweicloud.com/usermanual-obs/obs_41_0080.html#ZH-CN_TOPIC_0000001904425269__zh-cn_topic_0000001857214022_zh-cn_topic_0000001809221982_zh-cn_topic_0292412045_section64461132193015)。                                                                                                                                                            |
      | 存储类别      | 标准存储         | 表示桶的存储类别。不同的存储类别可以满足客户业务对存储性能、成本的不同诉求。 - 标准存储：适用于有大量热点文件或小文件，且需要频繁访问（平均一个月多次）并快速获取数据的业务场景。  - 低频访问存储：适用于不频繁访问（平均一年少于12次），但需要快速获取数据的业务场景。  - 归档存储：适用于很少访问（平均一年一次），且对数据获取速率要求不高的业务场景。  - 深度归档存储：适用于很少访问，访问频率低于归档存储，且对数据获取速率要求不高的业务场景。   更多详情请参见[存储类别](https://support.huaweicloud.com/usermanual-obs/obs_41_0006.html#ZH-CN_TOPIC_0000001858186034)。 |
      | 桶策略        | 私有           | 表示桶的读写权限控制。 - 私有：除桶ACL授权外的其他用户无桶的访问权限。  - 公共读：任何用户都可以对桶内对象进行读操作。  - 公共读写：任何用户都可以对桶内对象进行读/写/删除操作。  - 复制桶策略：复制源桶的桶策略。当且仅当您选择了源桶时，该选项处于可选状态。                                                                                                                                                                                                                                                  |
         
      
   
   3. 参数配置完成后，右下角单击"立即创建"。
   
   4. 桶创建完成后，在"桶列表"中单击新建的桶名称。在"概览"页的"域名信息"模块，您可以看到当前桶的"访问域名"。该访问域名后续将用于配置JuiceFS访问Secret。
      图4查看访问域名   
      ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002257908992.png "点击放大")
      
      
   
   
   
   
2. 创建Redis实例，用于存储JuiceFS产生的元数据，如文件/目录属性、数据块映射等信息。
   
   1. 进入购买缓存实例页面，切换至"快速购买"页签，请根据需求配置相关参数，具体示例如下。本示例仅提供必要参数说明，更多参数信息请参见[购买Redis实例](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0713002.html)。
      图5创建Redis实例   
      ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002257769796.png "点击放大")
      
      表5参数说明 
      | 参数   | 示例         | 说明                                                                                                                            |
      |:---|:---|:---|
      | 规格配置  | 基础版-16GB    | 包含产品类型-内存规格、版本号、实例类型等信息，请根据需求选择。各规格的具体区别，具体请参见[购买Redis实例](https://support.huaweicloud.com/usermanual-dcs/dcs-ug-0713002.html)。 |
      | 虚拟私有云 | vpc-default | **请选择与CCE集群相同的虚拟私有云。**                                                                                                         |
      | 子网      | subnet-observe | 请选择已创建的子网。                                                                                                                      |
         
      
   
   2. 参数配置完成后，在右下角单击"立即购买"。规格确认无误后，右下角单击"提交"。当对应的Redis实例状态变为运行中时，则说明创建成功。
   
   3. 单击已创建的Redis实例名称，在"概览"页右侧的"连接信息"模块中，您可以看到其IP地址。该IP地址后续将用于配置JuiceFS的访问Secret。
      图6连接信息   
      ![](https://support.huaweicloud.com/usermanual-cce/zh-cn_image_0000002257790950.png "点击放大")
      
      
   
   
   
   
3. 在已有的ECS中安装kubectl，并使用kubectl连接集群，具体操作请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)。
4. 依次执行以下命令，创建JuiceFS访问OBS桶和Redis实例的Secret。
   
   1. 执行以下命令，创建Secret的YAML文件。
      ```
      vim juicefs-secret.yaml
      ```
      文件内容如下：
      ```
      apiVersion: v1
      kind: Secret
      metadata:
        name: juicefs-secret-test3
      type: Opaque
      stringData:
        name: juicefs-obs-test3
        metaurl: "redis://192.168.0.137:6379/0"
        storage: obs 
        bucket: "https://<OBS桶访问地址>"
        access-key: <Access Key Id>
        secret-key: <Secret Access Key>
        envs: "{TZ: Asia/Shanghai}"    # 设置Mount Pod时区，默认为UTC
      ```
      表6参数说明 
      | 参数         | 示例                               | 说明                                                                                                                      |
      |:---|:---|:---|
      | metaurl     | "redis://192.168.0.137:6379/0" | 用于指定元数据存储位置，Redis实例IP地址的获取方式请参见[3]。                                                    |
      | storage      | obs                               | 用于指定文件系统要使用的存储类型，华为云场景固定为obs。                                                                                           |
      | bucket       | "https://\<OBS桶访问地址\>"           | 用于指定OBS桶的存储访问地址，具体请参见[4]。                                                               |
      | access-key | \<Access Key Id\>               | 请填写IAM用户的Access Key Id，作为访问存储时的身份认证信息，操作步骤请参见[我的凭证](https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html)。     |
      | secret-key   | \<Secret Access Key\>           | 请填写IAM用户的Secret Access Key，作为访问存储时的身份认证信息，操作步骤请参见[我的凭证](https://support.huaweicloud.com/usermanual-ca/ca_01_0003.html)。 |
         
      
   
   2. 执行以下命令，创建上述Secret。
      ```
      kubectl create -f juicefs-secret.yaml
      ```
      回显结果如下，则说明创建成功。
      ```
      secret/juicefs-secret-test3 created
      ```
      
   
   
   
   
5. 依次执行以下命令，创建Dataset资源，用于定义数据来源。
   
   1. 执行以下命令，创建Dataset的YAML文件。
      ```
      vim dataset.yaml
      ```
      文件内容如下，本示例仅提供部分参数说明，更多参数信息请参见[在Fluid中使用JuiceFS](https://juicefs.com/docs/zh/cloud/kubernetes/fluid/)。
      ```
      apiVersion: data.fluid.io/v1alpha1
      kind: Dataset
      metadata:
        name: jfsdemo
      spec:
        mounts:  # 仅支持设置一个mount，若需使用多个，请创建多个Dataset资源一致对应
          - name: juicefs-obs-test3
            mountPoint: "juicefs:///demo" 
            options:
              bucket: "https://OBS访问域名"
              storage: "obs"    # 固定为"obs"
            encryptOptions:     # 为Dataset配置存储访问凭证
              - name: metaurl   
                valueFrom:
                  secretKeyRef:
                    name: juicefs-secret-test3
                    key: metaurl
              - name: access-key
                valueFrom:
                  secretKeyRef:
                    name: juicefs-secret-test3
                    key: access-key
              - name: secret-key
                valueFrom:
                  secretKeyRef:
                    name: juicefs-secret-test3
                    key: secret-key
      ```
      表7Dataset参数说明 
      | 参数             | 示例                | 说明                                                                                                                                |
      |:---|:---|:---|
      | mounts.name     | juicefs-obs-test3 | 指定OBS桶内用于存储的该数据集的对象名。                                                                                                          |
      | mountPoint      | "juicefs:///demo" | 表示JuiceFS中的子目录，即用户在JuiceFS文件系统中存储数据的目录，以"juicefs://"开头，如"juicefs:///demo"为JuiceFS文件系统的"/demo"子目录，"juicefs:///"则表示JuiceFS文件系统的根目录。 |
      | encryptOptions | -                  | 用于指定JuiceFS认证信息，需要与上一步创建的Secret中的key一致。                                                                                          |
         
      
   
   2. 执行以下命令，创建上述Dataset。
      ```
      kubectl create -f dataset.yaml
      ```
      回显结果如下，则说明创建成功。
      ```
      dataset.data.fluid.io/jfsdemo created
      ```
      
   
   3. Dataset资源创建完成后，AI数据加速引擎插件将自动创建Worker Pod，用于初始化OBS数据，将其转化为JuiceFS的目录格式。您可以执行以下命令，查看Worker Pod是否创建成功。
      ```
      kubectl get pod
      ```
      回显结果如下，Worker Pod已创建成功。
      ```
      NAME                               READY   STATUS    RESTARTS   AGE
      jfsdemo-worker-0                   1/1     Running   0          15h
      ```
      
   
   
   
   
6. 依次执行以下命令，创建JuiceFSRuntime，确保应用程序能够高效地访问和使用存储在Dataset中的数据。JuiceFSRuntime和Dataset是一对一的关系，一个JuiceFSRuntime只能绑定一个Dataset，**且二者通过同名来绑定** 。如果您需要使用多个底层数据源，则需要创建多个JuiceFSRuntime和Dataset。
   
   1. 执行以下命令，创建JuiceFSRuntime的YAML文件。
      ```
      vim runtime.yaml
      ```
      文件内容如下，本示例仅提供部分参数说明，更多参数信息请参见[在Fluid中使用JuiceFS](https://juicefs.com/docs/zh/cloud/kubernetes/fluid/)。
      ```
      apiVersion: data.fluid.io/v1alpha1
      kind: JuiceFSRuntime
      metadata:
        name: jfsdemo
      spec:
        replicas: 1
        tieredstore:
          levels:
            - mediumtype: SSD
              path: /cache
              quota: 40960  
              low: "0.1"
      ```
      表8JuiceFSRuntime参数说明 
      | 参数        | 示例   | 说明                                                                                                                                                                                                                                 |
      |:---|:---|:---|
      | mediumtype | SSD      | 用于指定缓存目录所使用的存储设备类型，取值为MEM、SSD、HDD。 这个字段仅为一个"标记"，未必代表底层存储就是内存、SSD 或机械硬盘，实际物理存储介质取决于path的设置。 说明： 如果取值MEM，则AI数据加速引擎插件会根据quota大小自动设置容器的内存资源声明，保证容器的memory requests。 |
      | path      | /cache | 表示本地缓存的存储路径， 多盘缓存时用":"分隔多个目录，可设置为/dev/shm以使用内存设备。                                                                                                                                                       |
      | quota     | 40960   | 每个Worker容器（也就是缓存集群成员节点）的最大缓存容量，单位为MiB，将该值乘以Replicas（容器数量），就能得到整个缓存集群的总体可用空间。                                                                                                                                                      |
      | low      | "0.1" | 表示缓存盘的最小剩余空间占比，默认0.2。示例中的0.1表示最多可以使用缓存盘90%的空间。                                                                                                                                                                                    |
         
      
   
   2. 执行以下命令，创建上述JuiceFSRuntime。
      ```
      kubectl create -f runtime.yaml
      ```
      回显结果如下，则说明创建成功。
      ```
      juicefsruntime.data.fluid.io/jfsdemo created
      ```
      
   
   
   
   
7. 依次执行以下步骤，确认已创建的Dataset和JuiceFSRuntime是否正常。 
   1. 执行以下命令，查看JuiceFSRuntime的状态。
      ```
      kubectl get juicefs
      ```
      回显结果如下，该JuiceFSRuntime的WORKER PHASE处于ready状态，则说明jfsdemo运行正常。
      ![](https://support.huaweicloud.com/usermanual-cce/public_sys-resources/note_3.0-zh-cn.png)
      JuiceFs的FUSE Pod为懒启动模式，在Pod需要使用时才会创建。
      ```
      NAME      WORKER PHASE   FUSE PHASE   AGE 
      jfsdemo   Ready          Ready        25h
      ```
      
   
   2. 执行以下命令，查看Dataset的状态。
      ```
      kubectl get dataset
      ```
      回显结果如下，该Dataset处于Bound状态，则说明可以正常使用。
      ```
      NAME      UFS TOTAL SIZE   CACHED   CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE 
      jfsdemo   0.00B            0.00B    40.00KiB         0.0%                Bound   25h
      ```
      
   
   
   
   
8. 在Dataset和JuiceFSRuntime就绪后，AI数据加速引擎插件会自动为Dataset创建PV和PVC供负载使用，请执行以下命令查看相关信息。 
   1. 执行以下命令，查看PVC信息。
      ```
      kubectl get pvc
      ```
      回显结果如下：
      ```
      NAME      STATUS   VOLUME            CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE 
      jfsdemo   Bound    default-jfsdemo   100Pi      RWX            fluid          <unset>                 25h
      ```
      
   
   2. 执行以下命令，查看PV信息。
      ```
      kubectl get pv
      ```
      回显结果如下：
      ```
      NAME              CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM             STORAGECLASS   VOLUMEATTRIBUTESCLASS   REASON   AGE 
      default-jfsdemo   100Pi      RWX            Retain           Bound    default/jfsdemo   fluid          <unset>                          25h
      ```
      
   
   
   由上述回显可知，PVC和PV已自动绑定，可以直接挂载在Pod中使用。
   
   
9. 依次执行以下命令，创建业务Pod，并直接使用上述PVC和PV。
   
   1. 执行以下命令，创建工作负载的YAML文件。
      ```
      vim pod.yaml
      ```
      文件内容如下：
      ```
      apiVersion: v1
      kind: Pod
      metadata:
        name: demo-app
      spec:
        containers:
          - name: demo
            image: nginx
            volumeMounts:
              - mountPath: /data
                name: demo  # 待挂载的volume名称
        volumes:
          - name: demo
            persistentVolumeClaim:
              claimName: jfsdemo   # 已自动创建的PVC
      ```
      
   
   2. 执行以下命令，创建上述Pod。
      ```
      kubectl create -f pod.yaml
      ```
      回显结果如下，则说明创建成功。
      ```
      pod/demo-app created
      ```
      
   
   
   
   
10. 执行以下命令，查看Pod以及FUSE Pod的状态。 
    ```
    kubectl get pod
    ```
    回显结果如下，Pod以及FUSE Pod都已启动成功，此时PVC已正常挂载。
    ```
    NAME                               READY   STATUS    RESTARTS   AGE
    demo-app                           1/1     Running   0          3s
    jfsdemo-fuse-twwdh                 1/1     Running   0          3s
    jfsdemo-worker-0                   1/1     Running   0          17h
    ```
    
    
 
#### 版本记录
表9AI数据加速引擎插件版本记录 
| 插件版本 | 支持的集群版本                                                                          | 更新特性 | 社区版本                                                              |
|:---|:---|:---|:---|
| 1.0.5                              | v1.28 v1.29 v1.30 v1.31 | CCE Standard/Turbo集群支持使用AI数据加速引擎插件   | [1.0.5](https://github.com/fluid-cloudnative/fluid/tree/master) |
   
