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

Container Service for Kubernetes:ACK で ossfs 2.0 を使用して静的 OSS ボリュームをマウントする

最終更新日:Oct 30, 2025

永続ストレージまたは Pod 間のデータ共有を必要とするアプリケーションの場合、静的にプロビジョニングされた Persistent Volume (PV) と Persistent Volume Claim (PVC) を使用して、Object Storage Service (OSS) バケットを ossfs 2.0 ボリュームとしてマウントできます。このアプローチにより、アプリケーションコンテナーは、ローカルファイルシステムのように、標準の POSIX インターフェイスを使用して OSS 内のデータを読み書きできます。これは、ビッグデータ分析、AI トレーニング、静的コンテンツの配信などのシナリオに最適です。

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. PV の作成: 手動で PV を定義して、既存の OSS バケットをクラスターに登録します。この PV は、バケットの場所 (ルートディレクトリまたは特定のサブディレクトリ)、ストレージ容量、およびアクセスモードを指定します。

  3. PVC の作成: 定義した PV に一致するストレージリソースを要求する PVC を作成します。Kubernetes は PVC を利用可能な PV にバインドします。

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

考慮事項

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

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

  • アプリケーションのヘルスチェック: OSS ボリュームを使用する Pod にヘルスチェック (liveness probe) を設定します。たとえば、マウントポイントがまだアクセス可能であることを確認します。マウントが異常になった場合、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: PV を作成する

PV を作成して、既存の OSS バケットをクラスターに登録します。

  1. 次の内容で ossfs2-pv.yaml という名前のファイルを作成します。この PV 定義は、RRSA ロールを使用して OSS バケットにアクセスする方法を Kubernetes に指示します。

    次の PV は、cnfs-oss-test という名前の OSS バケットを、クラスター内の Pod が使用するための 20 GB の読み取り専用ファイルシステムとしてマウントします。
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-ossfs2  # PV 名
    spec:
      capacity:
        storage: 20Gi  # ボリューム容量を定義します (この値は PVC のマッチングにのみ使用されます)
      accessModes:  # アクセスモード
        - ReadOnlyMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        volumeHandle: pv-ossfs2  # PV 名 (metadata.name) と同じである必要があります
        volumeAttributes:
          fuseType: ossfs2
          bucket: cnfs-oss-test # OSS バケットの名前
          path: /subpath  # マウントするサブディレクトリ。ルートディレクトリをマウントする場合は空のままにします。
          url: oss-cn-hangzhou-internal.aliyuncs.com  # OSS バケットが配置されているリージョンのエンドポイント
          otherOpts: "-o close_to_open=false"
          authType: "rrsa"
          roleName: "demo-role-for-rrsa"  # 先ほど作成した RAM ロール
    • volumeAttributes 内のパラメーター:

      パラメーター

      必須

      説明

      fuseType

      はい

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

      bucket

      はい

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

      path

      いいえ

      OSS バケット内でマウントするサブディレクトリ。指定しない場合、デフォルトでバケットのルートがマウントされます。

      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

      otherOpts

      いいえ

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

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

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

      authType

      はい

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

      roleName

      はい

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

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

      RRSA 認証方式で指定の ARN または ServiceAccount を使用する方法については、「RRSA 認証方式で指定の ARN または ServiceAccount を使用するにはどうすればよいですか?」をご参照ください。
  2. PV 定義を適用します。

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

    kubectl get pv pv-ossfs2

    出力は、PV のステータスが Available であることを示しています。

    NAME        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   VOLUMEATTRIBUTESCLASS   REASON   AGE
    pv-ossfs2   20Gi       ROX            Retain           Available                          <unset>                          15s

ステップ 4: PVC を作成する

アプリケーションが必要とする永続ストレージ容量を宣言するために PVC を作成します。

  1. 次の YAML コンテンツで ossfs2-pvc-static.yaml という名前のファイルを作成します。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-ossfs2  # PVC 名
      namespace: default
    spec:
      # 以下の設定は PV と一致している必要があります
      accessModes:
        - ReadOnlyMany
      resources:
        requests:
          storage: 20Gi
      volumeName: pv-ossfs2  # バインドする PV
  2. PVC を作成します。

    kubectl create -f ossfs2-pvc-static.yaml
  3. PVC のステータスを確認します。

    kubectl get pvc pvc-ossfs2

    出力は、 PVC が PV にバインドされていることを示しています。

    NAME         STATUS   VOLUME      CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
    pvc-ossfs2   Bound    pv-ossfs2   20Gi       ROX                           <unset>                 6s

ステップ 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  # 参照する PVC
  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          12m
  4. アプリケーションが OSS のデータにアクセスできることを確認します。

    kubectl exec -it ossfs2-test-0 -- ls /data

    出力には、OSS マウントパスのデータが表示されるはずです。

方法 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: PV を作成する

PV を作成して、既存の OSS バケットをクラスターに登録します。

  1. 次の内容で ossfs2-pv-ak.yaml という名前のファイルを作成します。この PV 定義には、作成した Secret を指す nodePublishSecretRef が含まれています。

    次の PV は、cnfs-oss-test という名前の OSS バケットを、クラスター内の Pod が使用するための 20 GB の読み取り専用ファイルシステムとしてマウントします。
    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-ossfs2  # PV 名
    spec:
      capacity:
        storage: 20Gi  # ボリューム容量を定義します (この値は PVC のマッチングにのみ使用されます)
      accessModes:  # アクセスモード
        - ReadOnlyMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: ossplugin.csi.alibabacloud.com
        volumeHandle: pv-ossfs2   # PV 名 (metadata.name) と同じである必要があります
        # 先ほど作成した Secret を使用します
        nodePublishSecretRef:
          name: oss-secret  # AccessKey 情報を保存する Secret の名前
          namespace: default  # Secret が配置されている名前空間
        volumeAttributes:
          fuseType: ossfs2
          bucket: cnfs-oss-test  # OSS バケットの名前
          path: /subpath  # マウントするサブディレクトリ。ルートディレクトリをマウントする場合は空のままにします。
          url: oss-cn-hangzhou-internal.aliyuncs.com  # OSS バケットが配置されているリージョンのエンドポイント
          otherOpts: "-o close_to_open=false"
    • nodePublishSecretRef 内のパラメーター:

      パラメーター

      必須

      説明

      name

      はい

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

      namespace

      はい

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

    • volumeAttributes 内のパラメーター:

      パラメーター

      必須

      説明

      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

      いいえ

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

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

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

  2. PV 定義を適用します。

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

    kubectl get pv pv-ossfs2

    次の出力は、PV が Available であることを示しています:

    NAME        CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   VOLUMEATTRIBUTESCLASS   REASON   AGE
    pv-ossfs2   20Gi       ROX            Retain           Available                          <unset>                          15s

ステップ 3: PVC を作成する

アプリケーションが必要とする永続ストレージ容量を宣言するために PVC を作成します。

  1. PV を要求するために ossfs2-pvc-static.yaml という名前のファイルを作成します。

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-ossfs2  # PVC 名
      namespace: default
    spec:
      # 以下の設定は PV と一致している必要があります
      accessModes:
        - ReadOnlyMany
      resources:
        requests:
          storage: 20Gi
      volumeName: pv-ossfs2  # バインドする PV
  2. PVC を作成します。

    kubectl create -f ossfs2-pvc-static.yaml
  3. PVC が PV に Bound されていることを確認します。

    kubectl get pvc pvc-ossfs2

    期待される出力:

    NAME         STATUS   VOLUME      CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
    pvc-ossfs2   Bound    pv-ossfs2   20Gi       ROX                           <unset>                 6s

ステップ 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  # 参照する PVC
  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          12m
  4. アプリケーションが OSS のデータにアクセスできることを確認します。

    kubectl exec -it ossfs2-test-0 -- ls /data

    出力には、OSS マウントパスのデータが表示されるはずです。

本番環境での適用

カテゴリ

ベストプラクティス

セキュリティと権限

  • 認証には 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 probe を設定して、マウントポイントの可用性を確認します。マウントが失敗した場合、Kubernetes は自動的に Pod を再起動し、再マウントをトリガーします。

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

よくある質問