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

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

最終更新日:Jun 17, 2025

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

前提条件

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

    重要

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

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

    重要

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

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

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

  • 仮想ノードが ACK Pro マネージドクラスターにデプロイされていること。 詳細については、「ポッドをエラスティック コンテナー インスタンスにスケジュールする」をご参照ください。

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

  • 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: ****  // アクセスキー ID
      fs.oss.accessKeySecret: **** // アクセスキー シークレット
    
  2. 次のコマンドを実行して、シークレットをデプロイします。

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

    データ セキュリティを強化するために、バケットのプライベート エンドポイントを指定できます。 ただし、プライベート エンドポイントを指定する場合は、ACK クラスターが OSS がアクティブ化されているリージョンにデプロイされていることを確認してください。 たとえば、OSS バケットが中国 (杭州) リージョンに作成されている場合、バケットのパブリック エンドポイントは oss-cn-hangzhou.aliyuncs.com で、プライベート エンドポイントは oss-cn-hangzhou-internal.aliyuncs.com です。

    fs.oss.accessKeyId

    バケットにアクセスするために使用される AccessKey ID。

    fs.oss.accessKeySecret

    バケットにアクセスするために使用される AccessKey シークレット。

    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 によって高速化されたデータアクセスをテストするためのコンテナーを作成したり、関連機能を使用するために機械学習ジョブを送信したりできます。 このセクションでは、デプロイメントを使用して 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 // ECI のスペック
        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. 次のコマンドを実行して、デプロイメントをデプロイします。

    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 キャッシュモード」をご参照ください。