更新时间:2025-07-18 GMT+08:00

AI数据加速引擎插件

在处理AI和大数据任务时,Kubernetes面临计算存储分离导致的高延迟和带宽浪费、数据管理不足、存储接口碎片化,以及缺乏智能数据感知与调度等核心挑战。为此,CCE Standard/Turbo集群基于Fluid提供AI数据加速引擎插件。该插件提供数据集抽象、数据编排和应用编排等能力,旨在通过透明的数据管理和优化调度,帮助AI和大数据应用高效利用任何存储的数据,而无需修改现有应用。关于Fluid的更多信息请参见Fluid数据加速引擎概述

前提条件

约束与限制

  • AI数据加速引擎插件使用开源社区的模板与镜像,当前插件使用开源社区的模板与镜像,使用过程中可能存在缺陷,我们会定期同步社区版本来修复已知漏洞。请评估是否满足您的业务场景要求。
  • 目前,AI数据加速引擎插件仅支持通过JuiceFS底层存储引擎使用数据缓存的能力。JuiceFS是一款云原生分布式文件系统,将对象存储(如OBS)变成高性能本地磁盘,支持多级缓存加速和CCE集群无缝集成,适用于AI 训练、大数据分析等海量数据场景。
  • 该插件当前正处于上线阶段,已发布区域请以控制台实际为准
  • 该插件处于公测阶段,您可体验最新插件特性,但需要注意该版本的稳定性未得到完全的验证,不适用于CCE服务SLA

计费说明

安装插件

  1. 登录CCE控制台,单击集群名称进入集群。
  2. 在左侧导航栏中选择“插件中心”,在右侧找到AI数据加速引擎插件,单击“安装”
  3. 在“插件安装”页面右下角单击“安装”。AI数据加速引擎插件状态变为“运行中”时,则说明安装成功。

组件说明

表1 AI数据加速引擎插件组件

容器组件

说明

资源类型

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 提供给工作负载使用。整体流程如下:

表2 示例操作流程

操作步骤

说明

创建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管理控制台在左侧导航栏中选择“对象存储”
    2. 在页面右上角单击“创建桶”,请根据需求配置相关参数,具体示例如下。
      图1 创建桶

      表3 参数说明

      参数

      示例

      说明

      桶名称

      juicefs-data

      表示桶的名称,不能与已有桶的名称重复,包括其他用户创建的桶。桶创建成功后,桶名称不支持修改。

      命名要求如下:

      • 长度范围为3到63个字符,支持小写字母、数字、中划线(-)、英文句号(.)。
      • 禁止两个英文句号(.)相邻,禁止英文句号(.)和中划线(-)相邻,禁止以英文句号(.)和中划线(-)开头或结尾。
      • 禁止使用IP地址。

      数据冗余存储策略

      多AZ存储

      表示桶的数据冗余存储策略,创建成功后不支持修改。

      • 多AZ存储:数据冗余存储至多个可用区(AZ),可靠性更高。
      • 单AZ存储:数据仅存储在单个可用区(AZ),成本更低。

      多AZ和单AZ的性能对比请参见存储类别对比

      存储类别

      标准存储

      表示桶的存储类别。不同的存储类别可以满足客户业务对存储性能、成本的不同诉求。

      • 标准存储:适用于有大量热点文件或小文件,且需要频繁访问(平均一个月多次)并快速获取数据的业务场景。
      • 低频访问存储:适用于不频繁访问(平均一年少于12次),但需要快速获取数据的业务场景。
      • 归档存储:适用于很少访问(平均一年一次),且对数据获取速率要求不高的业务场景。
      • 深度归档存储:适用于很少访问,访问频率低于归档存储,且对数据获取速率要求不高的业务场景。

      更多详情请参见存储类别

      桶策略

      私有

      表示桶的读写权限控制。

      • 私有:除桶ACL授权外的其他用户无桶的访问权限。
      • 公共读:任何用户都可以对桶内对象进行读操作。
      • 公共读写:任何用户都可以对桶内对象进行读/写/删除操作。
      • 复制桶策略:复制源桶的桶策略。当且仅当您选择了源桶时,该选项处于可选状态。
    3. 参数配置完成后,右下角单击“立即创建”
    4. 桶创建完成后,在“桶列表”中单击新建的桶名称。在“概览”页的“域名信息”模块,您可以看到当前桶的“访问域名”。该访问域名后续将用于配置JuiceFS访问Secret。
      图2 查看访问域名

  2. 创建Redis实例,用于存储JuiceFS产生的元数据,如文件/目录属性、数据块映射等信息。

    1. 进入购买缓存实例页面,切换至“快速购买”页签,请根据需求配置相关参数,具体示例如下。本示例仅提供必要参数说明,更多参数信息请参见购买Redis实例
      图3 创建Redis实例

      表4 参数说明

      参数

      示例

      说明

      规格配置

      基础版-16GB

      包含产品类型-内存规格、版本号、实例类型等信息,请根据需求选择。各规格的具体区别,具体请参见购买Redis实例

      虚拟私有云

      vpc-default

      请选择与CCE集群相同的虚拟私有云。

      子网

      subnet-observe

      请选择已创建的子网。

    2. 参数配置完成后,在右下角单击“立即购买”。规格确认无误后,右下角单击“提交”。当对应的Redis实例状态变为运行中时,则说明创建成功。
    3. 单击已创建的Redis实例名称,在“概览”页右侧的“连接信息”模块中,您可以看到其IP地址。该IP地址后续将用于配置JuiceFS的访问Secret。
      图4 连接信息

  3. 在已有的ECS中安装kubectl,并使用kubectl连接集群,具体操作请参见通过kubectl连接集群
  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
      表5 参数说明

      参数

      示例

      说明

      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,作为访问存储时的身份认证信息。

      secret-key

      <Secret Access Key>

      请填写IAM用户的Secret Access Key,作为访问存储时的身份认证信息。

    2. 执行以下命令,创建上述Secret。
      kubectl create -f juicefs-secret.yaml

      回显结果如下,则说明创建成功。

      secret/juicefs-secret-test3 created

  5. 依次执行以下命令,创建Dataset资源,用于定义数据来源。

    1. 执行以下命令,创建Dataset的YAML文件。
      vim dataset.yaml

      文件内容如下,本示例仅提供部分参数说明。

      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
      表6 Dataset参数说明

      参数

      示例

      说明

      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

      文件内容如下,本示例仅提供部分参数说明。

      apiVersion: data.fluid.io/v1alpha1
      kind: JuiceFSRuntime
      metadata:
        name: jfsdemo
      spec:
        replicas: 1
        tieredstore:
          levels:
            - mediumtype: SSD
              path: /cache
              quota: 40960  
              low: "0.1"
      表7 JuiceFSRuntime参数说明

      参数

      示例

      说明

      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运行正常。

      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

相关文档

您可以通过Fluid数据加速引擎概述快速了解Fluid的基础知识。

版本记录

表8 AI数据加速引擎插件版本记录

插件版本

支持的集群版本

更新特性

社区版本

1.0.5

v1.28

v1.29

v1.30

v1.31

CCE Standard/Turbo集群支持使用AI数据加速引擎插件

1.0.5