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

Container Service for Kubernetes:オンラインアプリケーションの高速化

最終更新日:Nov 09, 2025

Fluid を使用すると、JindoRuntime を使用して、サーバーレスクラウドコンピューティングシナリオで Object Storage Service (OSS) に保存されているデータへのアクセスを高速化できます。キャッシュモードとキャッシュモードなしでデータアクセスを高速化できます。このトピックでは、キャッシュモードなしでオンラインアプリケーションを高速化する方法について説明します。

前提条件

  • non-containerOS の Container Service for Kubernetes (ACK) Pro クラスターが作成され、クラスターの Kubernetes バージョンが 1.18 以降であること。詳細については、「ACK Pro マネージドクラスターの作成」をご参照ください。

    重要

    ack-fluid コンポーネントは現在 ContainerOS ではサポートされていません。

  • クラウドネイティブ AI スイートがインストールされ、ack-fluid コンポーネントがデプロイされていること。

    重要

    オープンソースの Fluid をインストールしている場合は、ack-fluid コンポーネントをデプロイする前に Fluid をアンインストールしてください。

    • クラウドネイティブ AI スイートをインストールしていない場合: [Fluid] をデプロイし、データキャッシングアクセラレーションを有効にします。詳細については、「クラウドネイティブ AI スイートのデプロイ」をご参照ください。

    • すでにクラウドネイティブ AI スイートをインストールしている場合は、ACK コンソール[クラウドネイティブ AI スイート] ページに移動し、[ack-fluid] コンポーネントをデプロイします。

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

  • kubectl クライアントが ACK Pro クラスターに接続されていること。詳細については、「kubectl を使用して ACK クラスターに接続する」をご参照ください。

  • Object Storage Service (OSS) が有効化され、バケットが作成されていること。詳細については、「OSS の有効化」および「バケットの作成」をご参照ください。

制限事項

この機能は、ACK のエラスティック スケジューリング機能と相互排他的です。ACK のエラスティック スケジューリング機能の詳細については、「優先度ベースのリソーススケジューリングの設定」をご参照ください。

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

  1. サイズが 2 GB のテストデータセットを作成します。この例では、テストデータセットが使用されます。

  2. 作成した OSS バケットにテストデータセットをアップロードします。

    OSS が提供する ossutil ツールを使用してデータをアップロードできます。詳細については、「ossutil のインストール」をご参照ください。

ステップ 2: データセットと JindoRuntime を作成する

ACK クラスターと OSS バケットを設定した後、データセットと JindoRuntime をデプロイする必要があります。デプロイには数分しかかかりません。

  1. 次の内容に基づいて secret.yaml という名前のファイルを作成します。

    このファイルには、OSS バケットへのアクセスに使用される fs.oss.accessKeyIdfs.oss.accessKeySecret が含まれています。

    apiVersion: v1
    kind: Secret
    metadata:
      name: access-key
    stringData:
      fs.oss.accessKeyId: ****
      fs.oss.accessKeySecret: ****
  2. 次のコマンドを実行して Secret をデプロイします。

    kubectl create -f secret.yaml
  3. 次の内容に基づいて resource.yaml という名前のファイルを作成します。

    YAML ファイルには、次の情報が格納されています。

    • Dataset: リモートデータストアに保存されているデータセットと Unix ファイルシステム (UFS) 情報を指定します。

    • JindoRuntime: クラスター内のデータキャッシングのために JindoFS を有効にします。

    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 バケットのパブリックエンドポイントまたはプライベートエンドポイント。

    データセキュリティを強化するために、バケットのプライベートエンドポイントを指定できます。ただし、プライベートエンドポイントを指定する場合は、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

    アクセスモード。有効な値: ReadWriteOnceReadOnlyManyReadWriteManyReadWriteOncePod。デフォルト値: ReadOnlyMany

    disabled

    マスターノードとワーカーノードの両方でこのパラメーターを true に設定すると、キャッシュモードなしが使用されます。

  4. 次のコマンドを実行して、データセットと JindoRuntime をデプロイします。

    kubectl create -f resource.yaml
  5. 次のコマンドを実行して、データセットがデプロイされているかどうかを確認します。

    kubectl get dataset serverless-data

    期待される出力:

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

    出力の PHASE 列に Bound が表示されます。これは、データセットがデプロイされていることを示します。

  6. 次のコマンドを実行して、JindoRuntime がデプロイされているかどうかを確認します。

    kubectl get jindo serverless-data

    期待される出力:

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

    出力の FUSE 列に Ready が表示されます。これは、JindoRuntime がデプロイされていることを示します。

ステップ 3: OSS にアクセスするためのサーバーレスコンテナーの作成

コンテナーを作成して JindoFS によって高速化されたデータアクセスをテストしたり、機械学習ジョブを送信して関連機能を使用したりできます。このセクションでは、Deployment を使用して OSS に保存されているデータにアクセスするコンテナーを作成する方法について説明します。

  1. 次の内容に基づいて serving.yaml という名前のファイルを作成します。

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: model-serving
    spec:
      selector:
        matchLabels:
          app: model-serving
      template:
        metadata:
          labels:
            app: model-serving
            alibabacloud.com/fluid-sidecar-target: eci
            alibabacloud.com/eci: "true"
          annotations:
             k8s.aliyun.com/eci-use-specs: ecs.g7.4xlarge
        spec:
          containers:
            - image: fluidcloudnative/serving
              name: serving
              ports:
                - name: http1
                  containerPort: 8080
              env:
                - name: TARGET
                  value: "World"
              volumeMounts:
                - mountPath: /data
                  name: data
          volumes:
            - name: data
              persistentVolumeClaim:
                claimName: serverless-data
  2. 次のコマンドを実行して Deployment をデプロイします。

    kubectl create -f serving.yaml
  3. Serving ファイルのサイズを確認します。

    1. 次のコマンドを実行してコンテナーにログインします。

      kubectl exec -it model-serving-85b645b5d5-2trnf -c serving -- bash
    2. 次のコマンドを実行して Serving ファイルのサイズをクエリします。

      bash-4.4# du -sh /data/wwm_uncased_L-24_H-1024_A-16.zip

      期待される出力:

      1.2G    /data/wwm_uncased_L-24_H-1024_A-16.zip   
  4. 次のコマンドを実行してコンテナーのログを出力します。

    kubectl  logs model-serving-85b9587c5b-w5528  -c serving

    期待される出力:

    Begin loading models at 18:23:59
    
    real    0m27.107s
    user    0m0.000s
    sys    0m0.742s
    Finish loading models at 18:24:26

    出力の real フィールドは、Serving ファイルの複製に 27.107 秒 (0m27.107s) かかったことを示しています。所要時間は、ネットワーク遅延と帯域幅によって異なります。データアクセスを高速化したい場合は、「キャッシュモードでオンラインアプリケーションを高速化する」をご参照ください。

ステップ 4: データのクリア

データアクセスの高速化が不要になった場合は、環境をクリアできます。

  1. 次のコマンドを実行してコンテナーを削除します。

    kubectl delete deployment model-serving
  2. 次のコマンドを実行してデータセットを削除します。

    kubectl delete dataset serverless-data

参考資料

  • キャッシュモードなしでのオンラインアプリケーションの高速化の詳細については、「ジョブの高速化」および「Argo ワークフローの高速化」をご参照ください。

  • ACK モードでのキャッシュモードなしでのオンラインアプリケーションの高速化の詳細については、「ACK キャッシュモード」をご参照ください。

  • ACK Serverless モードでのキャッシュモードなしでのオンラインアプリケーションの高速化の詳細については、「ACK Serverless キャッシュモード」をご参照ください。