すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ジョブアプリケーション向けデータアクセスの高速化

最終更新日:Mar 27, 2026

OSS から大規模なデータセットを読み取る Kubernetes ジョブを実行する場合、標準のオブジェクトストレージ API 経由でデータにアクセスすると、処理が遅くなることがあります。Fluid は JindoRuntime を使用して OSS データを POSIX ファイルシステムとして直接マウントし、キャッシュレイヤーを経由せずに低レイテンシでのデータアクセスを実現します。本トピックでは、キャッシュなしモード(no cache mode)で JindoRuntime を設定する手順と、OSS バケットに対して Kubernetes ジョブを実行する方法について説明します。

前提条件

開始する前に、以下の条件を満たしていることを確認してください。

クラスターおよびコンポーネント:

  • ContainerOS 以外のノードで実行されている Kubernetes 1.18 以降の ACK Pro マネージドクラスター。詳細については、「ACK Pro マネージドクラスターを作成する」をご参照ください。

    重要

    ack-fluid コンポーネントは ContainerOS ノードをサポートしていません。

  • ack-fluid コンポーネントがデプロイ済みであること。以下のいずれかの方法を選択してください。

    • クラウドネイティブ AI スイートをまだインストールしていない場合は、スイートのインストール時に [Fluid 加速] を有効にします。詳細については、「クラウドネイティブ AI スイートのデプロイ」をご参照ください。

    • クラウドネイティブ AI スイートを既にインストール済みの場合: ACK コンソールクラウドネイティブ AI スイート ページに移動し、ack-fluid コンポーネントをデプロイします。

    重要

    既存のオープンソース版 Fluid をインストール済みの場合は、ack-fluid のデプロイ前にアンインストールしてください。

  • ACK Pro マネージドクラスターにデプロイされた仮想ノード。詳細については、「Pod を Elastic Container Instance にスケジューリングする」をご参照ください。

ツールおよびアクセス権限:

制限事項

キャッシュモードなしは、ACK の伸縮自在なスケジューリング機能と相互排他です。詳細については、「優先度に基づくリソーススケジューリングを設定する」をご参照ください。

ステップ 1:テストデータセットを OSS にアップロード

  1. 2 GB のテストデータセットを準備します。本例では、wwm_uncased_L-24_H-1024_A-16 BERT データセットを使用します。

  2. データセットを ossutil を使用して OSS バケットにアップロードします。詳細については、「ossutil のインストール」をご参照ください。

ステップ 2:Dataset および JindoRuntime の作成

以下の手順では、OSS バケットをマウントするために必要な Kubernetes Secret、Dataset、および JindoRuntime リソースを作成します。

デプロイには数分かかります。

OSS 認証情報のシークレットを作成

  1. 以下の内容で secret.yaml を作成します。

    apiVersion: v1
    kind: Secret
    metadata:
      name: access-key
    stringData:
      fs.oss.accessKeyId: ****
      fs.oss.accessKeySecret: ****
  2. シークレットをデプロイします。

    kubectl create -f secret.yaml

Dataset および JindoRuntime の作成

  1. 以下の内容で resource.yaml を作成します。

    apiVersion: data.fluid.io/v1alpha1
    kind: Dataset
    metadata:
      name: serverless-data
    spec:
      mounts:
      - mountPoint: oss://large-model-sh/
        name: demo
        path: /
        options:
          fs.oss.endpoint: oss-cn-shanghai.aliyuncs.com
        encryptOptions:
          - name: fs.oss.accessKeyId
            valueFrom:
              secretKeyRef:
                name: access-key
                key: fs.oss.accessKeyId
          - name: fs.oss.accessKeySecret
            valueFrom:
              secretKeyRef:
                name: access-key
                key: fs.oss.accessKeySecret
      accessModes:
        - ReadWriteMany
    ---
    apiVersion: data.fluid.io/v1alpha1
    kind: JindoRuntime
    metadata:
      name: serverless-data
    spec:
      master:
        disabled: true
      worker:
        disabled: true

    主なパラメーターの説明は以下のとおりです。

    パラメーター 説明
    mountPoint UFS のマウントパス。形式: oss://<oss_bucket>/<bucket_dir>。このフィールドにはエンドポイントを含めないでください。<bucket_dir> は、バケットのルートディレクトリにアクセスする場合は省略可能です。
    fs.oss.endpoint OSS バケットのパブリックエンドポイントまたはプライベートエンドポイント。データセキュリティを強化するため、プライベートエンドポイントを指定できます。プライベートエンドポイントを指定する場合は、ACK クラスターが OSS が有効化されているリージョンにデプロイされていることを確認してください。例:中国 (杭州) の場合、パブリックエンドポイントは oss-cn-hangzhou.aliyuncs.com、プライベートエンドポイントは oss-cn-hangzhou-internal.aliyuncs.com です。
    fs.oss.accessKeyId バケットへのアクセスに使用する AccessKey ID。
    fs.oss.accessKeySecret バケットへのアクセスに使用する AccessKey Secret。
    accessModes PVC のアクセスモード。有効な値: ReadWriteOnceReadOnlyManyReadWriteManyReadWriteOncePod。デフォルト値: ReadOnlyMany
    master.disabled / worker.disabled マスターノードおよびワーカーノードの両方で true を設定することで、キャッシュなしモードを有効化します。
  2. Dataset および JindoRuntime をデプロイします。

    kubectl create -f resource.yaml

デプロイメントの確認

  1. Dataset のステータスを確認します。

    kubectl get dataset serverless-data

    期待される出力:

    NAME              UFS TOTAL SIZE   CACHED   CACHE CAPACITY   CACHED PERCENTAGE   PHASE   AGE
    serverless-data                                                                   Bound   1d

    PHASEBound と表示された場合、Dataset は準備完了です。

  2. JindoRuntime のステータスを確認します。

    kubectl get jindo serverless-data

    期待される出力:

    NAME              MASTER PHASE   WORKER PHASE   FUSE PHASE   AGE
    serverless-data                                 Ready        3m41s

    FUSE PHASEReady と表示された場合、JindoRuntime は準備完了です。

ステップ 3:OSS データへのアクセスを実行するジョブの実行

このジョブでは、serverless-data PVC を /data にマウントし、すべてのファイルを /tmp にコピーして、転送に要する時間を計測します。

  1. 以下の内容で job.yaml を作成します。

    apiVersion: batch/v1
    kind: Job
    metadata:
      name: demo-app
    spec:
      template:
        metadata:
          labels:
            alibabacloud.com/fluid-sidecar-target: eci
            alibabacloud.com/eci: "true"
          annotations:
            k8s.aliyun.com/eci-use-specs: ecs.g7.4xlarge
        spec:
          containers:
            - name: demo
              image: debian:buster
              command:
                - /bin/bash
              args:
                - -c
                - du -sh /data && time cp -r /data/ /tmp
              volumeMounts:
                - mountPath: /data
                  name: demo
          restartPolicy: Never
          volumes:
            - name: demo
              persistentVolumeClaim:
                claimName: serverless-data
      backoffLimit: 4
  2. ジョブをデプロイします。

    kubectl create -f job.yaml
  3. コンテナログを表示して結果を確認します。

    kubectl logs demo-app--1-5fr74 -c demo

    期待される出力:

    real    0m23.644s
    user    0m0.004s
    sys     0m1.036s

    real の値は、データセットのコピーにかかる合計の壁時計時間(wall-clock time)を示します。実際の所要時間は、ネットワーク遅延および帯域幅によって異なります。

    キャッシュなしモードでは、アクセスのたびに OSS から直接データを読み取ります。繰り返し読み取りを行う場合のレイテンシを低減するには、代わりにキャッシュモードをご利用ください。詳細については、「キャッシュモードによるジョブの高速化」をご参照ください。

ステップ 4:クリーンアップ

テスト完了後、ジョブおよび Dataset を削除します。

kubectl delete job demo-app
kubectl delete dataset serverless-data