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

Container Service for Kubernetes:ACK で ossfs 2.0 を使用して動的にプロビジョニングされた OSS ボリュームをマウントする

最終更新日:Oct 30, 2025

永続ストレージまたは Pod 間のデータ共有を必要とするアプリケーションの場合、動的にプロビジョニングされた永続ボリューム (PV) を使用して、Object Storage Service (OSS) バケットを ossfs 2.0 ボリュームとしてマウントできます。このアプローチでは、StorageClass をテンプレートとして使用して PV を自動的に作成およびバインドします。これにより、ストレージ管理が簡素化されるだけでなく、アプリケーションがローカルファイルシステムのように標準の POSIX インターフェイスを使用して OSS 内のデータを読み書きできるようになります。

ossfs 1.0 と比較して、ossfs 2.0 はシーケンシャルな読み取りおよび書き込みパフォーマンスに優れており、OSS の高帯域幅を活用するのに最適です。

パフォーマンスの詳細については、「ossfs 2.0 クライアントのパフォーマンスベンチマーク」をご参照ください。

ワークフローの概要

次の図と手順では、Container Service for Kubernetes (ACK) クラスターに動的にプロビジョニングされた ossfs 2.0 ボリュームをマウントするための主なワークフローについて説明します。

  1. 認証方式の選択: RAM Roles for Service Accounts (RRSA) を使用するか、静的な AccessKey を使用するかを決定し、必要な資格情報を準備します。

    認証方式の比較

    • RRSA: 自動的にローテーションされる一時的な資格情報を使用し、Pod レベルの権限分離をサポートすることで、より高いセキュリティを提供します。この方法は、高いセキュリティ要件を持つ本番環境やマルチテナント環境に適しています。

      RRSA を使用する場合は、まず OSS アクセス専用の Resource Access Management (RAM) ロールを作成し、権限を付与します。

    • AccessKey: この方法は設定が簡単ですが、長期的な静的キーを使用するため、漏洩した場合にセキュリティリスクが生じます。この方法は、テスト環境または開発環境でのみ推奨されます。

      AccessKey を使用する場合は、まず RAM ユーザーを作成し、その AccessKey ペアを取得して、キーペアを Kubernetes Secret として保存します。

  2. StorageClass の作成: OSS バケット情報、マウントパラメーター、および認証構成を含むストレージテンプレートを定義します。

  3. PVC の作成: OSS ストレージリソースをリクエストします。この操作により、指定された StorageClass に基づいて PV の動的プロビジョニングが自動的にトリガーされ、PVC にバインドされます。

  4. アプリケーションでのボリュームのマウント: PVC をコンテナーの指定されたディレクトリにボリュームとしてマウントします。

考慮事項

  • ワークロードの適合性: ossfs 2.0 は、読み取り専用およびシーケンシャルな追記書き込みシナリオ向けに設計されています。ランダムまたは同時書き込みシナリオの場合、データ整合性は保証できません。これらのケースでは ossfs 1.0 を使用することをお勧めします。

  • データ安全性: ossfs マウントポイント内のファイル (Pod 内またはホストノード上) の変更または削除は、ソース OSS バケットと即座に同期されます。偶発的なデータ損失を防ぐために、バケットのバージョン管理を有効にすることをお勧めします。

  • アプリケーションのヘルスチェック: OSS ボリュームを使用する Pod にヘルスチェック (liveness プローブ) を設定します。たとえば、マウントポイントがまだアクセス可能であることを確認します。マウントが異常になった場合、Pod は自動的に再起動され、接続性が回復されます。

  • マルチパートアップロード管理: 大きなファイル (> 10 MB) をアップロードすると、ossfs は自動的にマルチパートアップロードを使用します。アップロードが中断されると、不完全なパーツがバケットに残ります。ストレージコストを節約するために、これらのパーツを手動で削除するか、これらのパーツを自動的にクリーンアップするためのライフサイクルルールを設定します。

方法 1: RRSA を使用した認証

RRSA を活用することで、クラウドリソースへのアクセスに対して詳細な PV レベルの権限分離を実現でき、セキュリティリスクを大幅に低減できます。詳細については、「RRSA を使用して異なる Pod が異なるクラウドサービスにアクセスすることを承認する」をご参照ください。

前提条件

ステップ 1: RAM ロールの作成

RRSA を使用してクラスターに OSS ボリュームをマウントしたことがある場合は、このステップをスキップしてください。初めての場合は、次の手順に従ってください。

  1. ACK コンソールRRSA 機能を有効にする

  2. OIDC IdP の RAM ロールを作成します。このロールは RRSA を使用して偽装されます。

    次の表に、サンプルロール demo-role-for-rrsa の主要なパラメーターを示します。

    パラメーター

    説明

    ID プロバイダータイプ

    [OIDC] を選択します。

    ID プロバイダー

    クラスターに関連付けられているプロバイダー (例: ack-rrsa-<cluster_id>) を選択します。ここで、<cluster_id> は実際のクラスター ID です。

    条件

    • oidc:iss: デフォルト値のままにします。

    • oidc:aud: デフォルト値のままにします。

    • oidc:sub: 次の条件を手動で追加します。

      • キー: [oidc:sub] を選択します。

      • 演算子: [StringEquals] を選択します。

      • : system:serviceaccount:ack-csi-fuse:csi-fuse-ossfs を入力します。

        この値では、ack-csi-fuse は ossfs クライアントが配置されている名前空間であり、カスタマイズできません。csi-fuse-ossfs はサービスアカウント名であり、必要に応じて変更できます。

        サービスアカウント名の変更方法の詳細については、「RRSA 認証で指定された ARN または ServiceAccount を使用する方法

    ロール名

    demo-role-for-rrsa を入力します。

ステップ 2: demo-role-for-rrsa ロールに権限を付与する

  1. OSS アクセス用のカスタムポリシーを作成します。詳細については、「カスタムポリシーの作成」をご参照ください。

    要件に基づいて読み取り専用または読み取り/書き込みポリシーを選択し、mybucket をバケットの名前に置き換えます。

    • OSS 読み取り専用ポリシー

      OSS 読み取り専用ポリシードキュメントの表示

      {
          "Statement": [
              {
                  "Action": [
                      "oss:Get*",
                      "oss:List*"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:mybucket",
                      "acs:oss:*:*:mybucket/*"
                  ]
              }
          ],
          "Version": "1"
      }
    • OSS 読み取り/書き込みポリシー

      OSS 読み取り/書き込みポリシードキュメントの表示

      {
          "Statement": [
              {
                  "Action": "oss:*",
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:mybucket",
                      "acs:oss:*:*:mybucket/*"
                  ]
              }
          ],
          "Version": "1"
      }
  2. (オプション) KMS で管理されている CMK ID を使用して OSS オブジェクトを暗号化する場合は、RAM ユーザーに KMS 権限も設定する必要があります。詳細については、「暗号化操作」をご参照ください。

  3. demo-role-for-rrsa ロールに権限を付与します。詳細については、「RAM ロールへの権限付与」をご参照ください。

    説明

    信頼ポリシーを変更することで、OSS 権限が付与されている既存の RAM ロールを使用することもできます。詳細については、「既存の RAM ロールを使用して権限を付与する」をご参照ください。

ステップ 3: StorageClass の作成

動的に PV をプロビジョニングするためのテンプレートとして使用する StorageClass を作成します。

  1. 次の内容で ossfs2-sc-rrsa.yaml という名前のファイルを作成します。

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: ossfs2-sc  # StorageClass の名前。
    parameters:
      bucket: cnfs-oss-test  # バケットの名前。
      path: /subpath  # マウントするサブディレクトリ。空のままにすると、ルートディレクトリがマウントされます。
      url: oss-cn-hangzhou-internal.aliyuncs.com  # OSS バケットが配置されているリージョンのエンドポイント。
      authType: rrsa
      roleName: demo-role-for-rrsa  # 先ほど作成した RAM ロール。
      fuseType: ossfs2
      volumeAs: sharepath
      otherOpts: "-o close_to_open=false"
    provisioner: ossplugin.csi.alibabacloud.com  # この値は固定です。
    reclaimPolicy: Retain  # 動的にプロビジョニングされた PV のリクレイムポリシー。Retain のみがサポートされており、PVC が削除されても PV と OSS バケット内のデータは削除されません。
    volumeBindingMode: Immediate  # ボリュームバインディングモード。OSS ボリュームはゾーンベースのノードアフィニティを必要としないため、デフォルト値の Immediate を使用できます。

    次の表に、parameters フィールドのパラメーターを示します。

    パラメーター

    必須

    説明

    bucket

    はい

    マウントする OSS バケットの名前。

    path

    はい

    バケット内のベースパス。volumeAssharepath に設定されている場合、動的にプロビジョニングされた各 PV には、このパスの下に /ack/<pv-name> などの一意のサブディレクトリが割り当てられます。

    url

    はい

    OSS バケットのアクセスエンドポイント

    • クラスターノードとバケットが同じリージョンにある場合、または Virtual Private Cloud (VPC) 接続が確立されている場合は、内部エンドポイントを使用します。

    • マウントノードとバケットが異なるリージョンにある場合は、パブリックエンドポイントを使用します。

    さまざまなアクセスエンドポイントの一般的なフォーマットは次のとおりです。

    • 内部: http://oss-{{regionName}}-internal.aliyuncs.com または https://oss-{{regionName}}-internal.aliyuncs.com

      内部アクセスエンドポイントのフォーマット vpc100-oss-{{regionName}}.aliyuncs.com は非推奨です。できるだけ早く新しいフォーマットに切り替えてください。
    • パブリック: http://oss-{{regionName}}.aliyuncs.com または https://oss-{{regionName}}.aliyuncs.com

    fuseType

    はい

    マウントに使用するクライアントを指定します。ossfs 2.0 クライアントを使用するには、ossfs2 に設定する必要があります。

    authType

    はい

    RRSA 認証方式が使用されることを宣言するには、rrsa に設定します。

    roleName

    はい

    作成または変更した RAM ロールの名前に設定します。

    異なる PV に異なる権限を割り当てるには、権限セットごとに個別の RAM ロールを作成します。次に、各 PV の定義で roleName パラメーターを使用して、対応するロールに関連付けます。

    volumeAs

    いいえ

    PV がどのようにプロビジョニングされるかを定義します。sharepath は、各 PV が path で指定されたディレクトリに個別のサブディレクトリを作成することを示します。

    otherOpts

    いいえ

    OSS ボリュームに渡される追加のマウントオプションで、-o *** -o *** の形式でスペース区切りのフラグの文字列として指定します。例: -o close_to_open=false

    close-to-open オプションは、メタデータの一貫性を制御します。false (デフォルト) に設定すると、メタデータがキャッシュされ、小さなファイルの読み取りパフォーマンスが向上します。true に設定すると、クライアントはファイルが開かれるたびに GetObjectMeta リクエストを送信して OSS から最新のメタデータをフェッチし、待機時間と API 呼び出しの増加を犠牲にしてリアルタイムの一貫性を確保します。

    その他のオプションパラメーターについては、「ossfs 2.0 マウントオプション」をご参照ください。

  2. StorageClass を適用します。

    kubectl create -f ossfs2-sc-rrsa.yaml
  3. StorageClass のステータスを確認します。

    kubectl get sc ossfs2-sc

    期待される出力:

    NAME        PROVISIONER                      RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    ossfs2-sc   ossplugin.csi.alibabacloud.com   Retain          Immediate                                  10s

ステップ 4: PVC の作成

StorageClass からストレージリソースをリクエストするために PVC を作成します。この操作により、基になる PV の自動作成がトリガーされます。

  1. 次の内容で ossfs2-pvc-dynamic.yaml という名前のファイルを作成します。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-ossfs2 # PVC の名前。
      namespace: default
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 20Gi
      storageClassName: ossfs2-sc   # 先ほど作成した StorageClass。
  2. PVC を作成します。

    kubectl create -f ossfs2-pvc-dynamic.yaml
  3. PVC が Bound であることを確認します。これは、自動的に作成された PV にバインドされていることを示します。

    kubectl get pvc pvc-ossfs2

    期待される出力:

    NAME        STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS     AGE
    pvc-ossfs2  Bound    d-bp17y03tpy2b8x******   20Gi       RWX            ossfs2-sc        25s

ステップ 5: アプリケーションの作成とボリュームのマウント

これで、PVC がバインドされているストレージリソースをアプリケーションにマウントできます。

  1. 次の内容を含む ossfs2-test.yaml という名前のファイルを作成します。

    次の YAML テンプレートは、1 つの Pod で構成される StatefulSet を作成します。Pod は pvc-ossfs2 という名前の PVC を介してストレージリソースを要求し、ボリュームを /data パスにマウントします。

    YAML テンプレート

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: ossfs2-test
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: ossfs2-test
      template:
        metadata:
          labels:
            app: ossfs2-test
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
            volumeMounts:
            - name: pvc-ossfs2
              mountPath: /data
          volumes:
            - name: pvc-ossfs2
              persistentVolumeClaim:
                claimName: pvc-ossfs2
  2. アプリケーションをデプロイします。

    kubectl create -f ossfs2-test.yaml
  3. Pod のデプロイステータスを確認します。

    kubectl get pod -l app=ossfs2-test

    期待される出力:

    NAME            READY   STATUS    RESTARTS   AGE
    ossfs2-test-0   1/1     Running   0          2m
  4. マウントポイントへの読み取りと書き込みが可能であることを確認します。

    # テストファイルをマウントターゲットに書き込みます。
    kubectl exec -it ossfs2-test-0 -- touch /data/test.txt
    # マウントターゲットの内容を表示します。
    kubectl exec -it ossfs2-test-0 -- ls /data

    出力には、作成した test.txt ファイルが表示され、ボリュームがマウントされ、書き込み権限があることを示します。

方法 2: AccessKey を使用した認証

ACK は、静的な AccessKey を Kubernetes Secret に保存することで、OSS ボリュームマウントの認証をサポートします。このアプローチは、特定のアプリケーションが長期的で固定されたアクセス権限を必要とするシナリオに適しています。

  • PV によって参照される AccessKey が取り消されたり、その権限が変更されたりすると、ボリュームを使用しているアプリケーションはすぐにアクセスを失い、権限エラーが発生します。アクセスを復元するには、Secret 内の資格情報を更新し、アプリケーションの Pod を再起動して再マウントを強制します。このプロセスは短いサービス中断を引き起こすため、スケジュールされたメンテナンスウィンドウ中にのみ実行する必要があります。

  • 手動でのキーローテーションに伴うダウンタイムを避けるために、代わりに RRSA 認証方式を使用することを強くお勧めします。

前提条件

ステップ 1: OSS アクセス権限を持つ RAM ユーザーを作成し、AccessKey ペアを取得する

RAM ユーザーの作成と権限の付与

  1. RAM ユーザーを作成します。すでに RAM ユーザーがいる場合は、このステップをスキップできます。詳細については、「RAM ユーザーの作成」をご参照ください。

  2. OSS アクセス用のカスタムポリシーを作成します。詳細については、「カスタムポリシーの作成」をご参照ください。

    要件に基づいて読み取り専用または読み取り/書き込みポリシーを選択し、mybucket をバケットの名前に置き換えます。

    • OSS 読み取り専用ポリシー

      OSS 読み取り専用ポリシードキュメントの表示

      {
          "Statement": [
              {
                  "Action": [
                      "oss:Get*",
                      "oss:List*"
                  ],
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:mybucket",
                      "acs:oss:*:*:mybucket/*"
                  ]
              }
          ],
          "Version": "1"
      }
    • OSS 読み取り/書き込みポリシー

      OSS 読み取り/書き込みポリシードキュメントの表示

      {
          "Statement": [
              {
                  "Action": "oss:*",
                  "Effect": "Allow",
                  "Resource": [
                      "acs:oss:*:*:mybucket",
                      "acs:oss:*:*:mybucket/*"
                  ]
              }
          ],
          "Version": "1"
      }
  3. (オプション) KMS で管理されている CMK ID を使用して OSS オブジェクトを暗号化する場合は、RAM ユーザーに KMS 権限も設定する必要があります。詳細については、「暗号化操作」をご参照ください。

  4. RAM ユーザーに OSS 権限を付与します。詳細については、「RAM ユーザーへの権限付与」をご参照ください。

  5. RAM ユーザーの AccessKey を作成します。詳細については、「AccessKey の取得」をご参照ください。

AccessKey 資格情報を保存するための Secret の作成

次のコマンドを実行して、OSS 認証用の Secret を作成します。akIdakSecret を実際の資格情報に置き換えます。

kubectl create -n default secret generic oss-secret --from-literal='akId=xxxxxx' --from-literal='akSecret=xxxxxx'

ステップ 2: StorageClass の作成

  1. 次の内容で ossfs2-sc.yaml という名前のファイルを作成します。

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: ossfs2-sc
    parameters:
      # 準備段階で作成した Secret を使用します。
      csi.storage.k8s.io/node-publish-secret-name: oss-secret  
      csi.storage.k8s.io/node-publish-secret-namespace: default
      fuseType: ossfs2
      bucket: cnfs-oss-test # バケットの名前。
      path: /subpath  # マウントするサブディレクトリ。空のままにすると、ルートディレクトリがマウントされます。
      url: oss-cn-hangzhou-internal.aliyuncs.com  # OSS バケットが配置されているリージョンのエンドポイント。
      otherOpts: "-o close_to_open=false"
    provisioner: ossplugin.csi.alibabacloud.com  # この値は固定です。
    reclaimPolicy: Retain  # 動的にプロビジョニングされた PV のリクレイムポリシー。Retain のみがサポートされており、PVC が削除されても PV と OSS バケット内のデータは削除されません。
    volumeBindingMode: Immediate  # ボリュームバインディングモード。OSS ボリュームはゾーンベースのノードアフィニティを必要としないため、デフォルト値の Immediate を使用できます。

    次の表に、parameters フィールドのパラメーターを示します。

    • Secret の構成

      パラメーター

      必須

      説明

      csi.storage.k8s.io/node-publish-secret-name

      はい

      AccessKey 情報を保存する Secret の名前。

      csi.storage.k8s.io/node-publish-secret-namespace

      はい

      AccessKey 情報を保存する Secret が配置されている名前空間。

    • ボリューム構成

      パラメーター

      必須

      説明

      fuseType

      はい

      マウントに使用するクライアントを指定します。ossfs 2.0 クライアントを使用するには、ossfs2 に設定する必要があります。

      bucket

      はい

      マウントする OSS バケットの名前。

      path

      いいえ

      OSS バケットのマウントパスバケットのルートからの相対的なディレクトリ構造を表します。

      url

      はい

      OSS バケットをマウントするために使用されるエンドポイント。エンドポイントは、OSS コンソールのバケットの概要ページで確認できます。

      • ノードとバケットが同じリージョンにある場合、または VPC 接続が確立されている場合は、内部エンドポイントを使用します。

      • ノードとバケットが異なるリージョンにある場合は、パブリックエンドポイントを使用します。

      さまざまなアクセスポートに一般的に使用されるフォーマットは次のとおりです。

      • 内部エンドポイントフォーマット: http://oss-{{regionName}}-internal.aliyuncs.com または https://oss-{{regionName}}-internal.aliyuncs.com

      • パブリックエンドポイントフォーマット: http://oss-{{regionName}}.aliyuncs.com または https://oss-{{regionName}}.aliyuncs.com

      重要

      vpc100-oss-{{regionName}}.aliyuncs.com 内部エンドポイントフォーマットは非推奨です。すぐに新しいフォーマットに切り替えてください。

      otherOpts

      いいえ

      -o *** -o *** の形式で OSS ボリュームのカスタムパラメーターを入力します。例: -o close_to_open=false

      close-to-open: デフォルトでは無効になっています。有効にすると、ファイルが開かれるたびにシステムが GetObjectMeta リクエストを OSS に送信して最新のメタデータを取得します。これにより、メタデータが常に最新であることが保証されます。ただし、多数の小さなファイルを読み取るシナリオでは、頻繁なメタデータクエリによってアクセス待機時間が大幅に増加する可能性があります。

      その他のオプションパラメーターについては、「ossfs 2.0 マウントオプション」をご参照ください。

  2. StorageClass を作成します。

    kubectl create -f ossfs2-sc.yaml

ステップ 3: PVC の作成

StorageClass からストレージリソースをリクエストするために PVC を作成します。この操作により、基になる PV の自動作成がトリガーされます。

  1. 次の内容で ossfs2-pvc-dynamic.yaml という名前のファイルを作成します。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-ossfs2 # PVC の名前。
      namespace: default
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 20Gi
      storageClassName: ossfs2-sc   # 先ほど作成した StorageClass。
  2. PVC を作成します。

    kubectl create -f ossfs2-pvc-dynamic.yaml
  3. PVC が Bound であることを確認します。これは、自動的に作成された PV にバインドされていることを示します。

    kubectl get pvc pvc-ossfs2

    期待される出力:

    NAME        STATUS   VOLUME                   CAPACITY   ACCESS MODES   STORAGECLASS     AGE
    pvc-ossfs2  Bound    d-bp17y03tpy2b8x******   20Gi       RWX            ossfs2-sc        25s

ステップ 4: アプリケーションの作成とボリュームのマウント

これで、PVC がバインドされているストレージリソースをアプリケーションにマウントできます。

  1. 次の内容を含む ossfs2-test.yaml という名前のファイルを作成します。

    次の YAML テンプレートは、1 つの Pod で構成される StatefulSet を作成します。Pod は pvc-ossfs2 という名前の PVC を介してストレージリソースを要求し、ボリュームを /data パスにマウントします。

    YAML テンプレート

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: ossfs2-test
      namespace: default
    spec:
      replicas: 1
      selector:
        matchLabels:
          app: ossfs2-test
      template:
        metadata:
          labels:
            app: ossfs2-test
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            ports:
            - containerPort: 80
            volumeMounts:
            - name: pvc-ossfs2
              mountPath: /data
          volumes:
            - name: pvc-ossfs2
              persistentVolumeClaim:
                claimName: pvc-ossfs2
  2. アプリケーションをデプロイします。

    kubectl create -f ossfs2-test.yaml
  3. Pod のデプロイステータスを確認します。

    kubectl get pod -l app=ossfs2-test

    期待される出力:

    NAME            READY   STATUS    RESTARTS   AGE
    ossfs2-test-0   1/1     Running   0          2m
  4. マウントポイントへの読み取りと書き込みが可能であることを確認します。

    # テストファイルをマウントターゲットに書き込みます。
    kubectl exec -it ossfs2-test-0 -- touch /data/test.txt
    # マウントターゲットの内容を表示します。
    kubectl exec -it ossfs2-test-0 -- ls /data

    出力には、作成した test.txt ファイルが表示され、ボリュームがマウントされ、書き込み権限があることを示します。

本番環境での適用

カテゴリ

ベストプラクティス

セキュリティと権限

  • 認証には RRSA を推奨: OpenID Connect (OIDC) と Security Token Service (STS) を介して、自動的にローテーションされる一時的な資格情報を提供し、Pod レベルでの詳細な権限分離を可能にし、資格情報漏洩のリスクを大幅に低減します。

  • 最小権限の原則に従う: RAM ロールまたはユーザーを作成する際は、アプリケーションが機能するために必要な最小限の権限のみを付与します。

パフォーマンスとコスト

  • マウントオプションの最適化 (otherOpts):

    • メタデータキャッシング (-o close_to_open=false): これはデフォルトの動作です。ファイルメタデータをキャッシュし、待機時間と API 呼び出しコストを削減するため、多数の小さなファイルを読み取るワークロードに最適です。

    • リアルタイムメタデータ (-o close_to_open=true): 別のシステムが OSS 内のファイルを頻繁に更新し、Pod がそれらの変更をすぐに確認する必要がある場合にのみ使用します。このオプションは、待機時間と API コストを増加させます。

    ビジネスシナリオに基づいたより詳細なパフォーマンス最適化については、「ossfs 2.0 マウントオプション」をご参照ください。

  • ワークロードの理解:

    • ossfs 2.0 は、AI トレーニング、推論、ビッグデータ処理、自動運転など、完全な POSIX ベースの API に依存しない、読み取りヘビーおよび追記専用の書き込みパターンに最適です。

    • ossfs 2.0 は、データベースや共同編集アプリケーションなど、ファイルコンテンツの頻繁な変更を必要とするランダム書き込みワークロードには適していません

  • 不完全なアップロードのクリーンアップ: アプリケーションが大きなファイルのアップロードを頻繁に中断する場合、OSS バケットにライフサイクルルールを設定して、不完全なマルチパートアップロードを定期的に自動削除します。これにより、マージされていないパーツが蓄積され、不要なストレージコストが発生するのを防ぎます。

  • 内部エンドポイントの使用: クラスターと OSS バケットが同じリージョンにある場合は、常に内部エンドポイントを使用して、パブリックデータ転送コストを回避し、ネットワーク遅延を削減します。

O&M 管理

  • ヘルスチェックの設定: アプリケーション Pod に liveness プローブを設定して、マウントポイントの可用性を確認します。マウントが失敗した場合、Kubernetes は自動的に Pod を再起動し、再マウントをトリガーします。

  • モニタリングとアラートの設定: コンテナーストレージモニタリングを使用してボリュームのパフォーマンスと容量を追跡し、問題を事前に特定するためのアラートを設定します

よくある質問