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

Container Service for Kubernetes:仕事を加速する

最終更新日:Jul 28, 2025

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

前提条件

  • 非containerOSを使用したContainer Service for Kubernetes (ACK) Proクラスターが作成され、クラスターのKubernetesバージョンが1.18以降になります。 詳細については、「ACK Proクラスターの作成」をご参照ください。

    重要

    ack − fluidコンポーネントは、現在、ContainerOS上でサポートされていない。

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

    重要

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

    • クラウドネイティブAIスイートをインストールしていない場合は、スイートのインストール時にFluidアクセラレーションを有効にします。 詳細については、「クラウドネイティブ 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: ****
      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バケットのパブリックエンドポイントまたはプライベートエンドポイント。

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

    fs.oss.accessKeyId

    バケットへのアクセスに使用されるAccessKey ID。

    fs.oss.accessKeySecret

    バケットへのアクセスに使用されるAccessKeyシークレット。

    accessModes

    アクセスモード。 有効な値: ReadWriteOnceReadOnlyManyReadWriteMany、およびReadWriteOncePod。 デフォルト値: ReadOnlyMany

    無効化

    このパラメーターをマスターノードとワーカーノードの両方で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

    バインドは、出力の [フェーズ] 列に表示されます。 これは、データセットがデプロイされたことを示します。

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

    kubectl get jindo serverless-data

    期待される出力:

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

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

ステップ3: ジョブを使用してOSSにアクセスするコンテナーを作成する

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

  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
              args:
                - -c
                - du -sh /data && time cp -r /data/ /tmp
              command:
                - /bin/bash
              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

    出力のフィールドは、Servingファイルの複製に23.644秒 (0m23.644秒) かかったことを示しています。 期間は、ネットワークの待ち時間と帯域幅によって異なります。 データアクセスを高速化する場合は、「キャッシュモードでジョブを高速化」をご参照ください。

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

データアクセスの高速化をテストした後、できるだけ早い機会に関連データをクリアします。

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

    kubectl delete job demo-app
  2. 次のコマンドを実行して、データセットを削除します。

    kubectl delete dataset serverless-data