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

Container Service for Kubernetes:OSS バケットのライフサイクルを管理する

最終更新日:Jun 11, 2025

Container Service for Kubernetes (ACK) は、Container Network File System (CNFS) を使用して、Object Storage Service (OSS) バケットのライフサイクルを個別に管理します。このトピックでは、CNFS を使用して OSS バケットのライフサイクルを管理する方法と、ワークロードで CNFS を使用する方法について説明します。

前提条件

  • csi-plugin および csi-provisioner のバージョンが 1.24.2-5b34494d-aliyun 以降であること。 csi-plugin および csi-provisioner の更新方法の詳細については、「csi-plugin および csi-provisioner を更新する」をご参照ください。

  • storage-operator のバージョンが 1.24.95-e2d0756-aliyun 以降であること。 storage-operator の更新方法の詳細については、「コンポーネントを管理する」をご参照ください。

概要

CNFS を使用して OSS バケットのライフサイクルを管理するには、次のいずれかの方法を使用できます。

  • 方法 1:CNFS を使用して cnfs-oss- 形式の名前の OSS バケットを作成する

    CNFS を使用して、動的にプロビジョニングされた永続ボリューム (PV) としてクラスタにマウントできる OSS バケットを作成します。cnfs-oss-<UUID e.g. clusterid> という名前の OSS バケットを作成し、動的にプロビジョニングされたボリュームとして Deployment および StatefulSet にマウントします。

  • 方法 2:CNFS CRD を作成して既存の OSS バケットを指定する

    バケット名を指定することにより、既存の OSS バケットを使用する CNFS CRD を作成します。次に、CNFS CRD を使用して、静的または動的にプロビジョニングされたボリュームとして OSS バケットを Deployment にマウントできます。

説明

CNFS CRD を作成すると、BucketName に次の制限が適用されます:cnfs-oss-<UUID e.g. clusterid>

  • 既存の OSS バケットの名前が指定したバケット名と同じ場合、既存の OSS バケットは ContainerNetworkFileSystem オブジェクトに関連付けられます。

  • 既存の OSS バケットの名前が指定したバケット名と同じでない場合、指定した名前の新しい OSS バケットが作成され、作成した ContainerNetworkFileSystem オブジェクトに関連付けられます。

    たとえば、バケット名としてcnfs-oss-<clusterid> を指定すると、cnfs-oss-<clusterid> という名前の OSS バケットが作成されます。<clusterid> はクラスタの ID です。バケット名が重複していないことを確認してください。

方法 1:CNFS を使用して cnfs-oss-<UUID e.g. clusterid> という名前の OSS バケットを作成する

  1. CNFS を使用してcnfs-oss-<UUID e.g. clusterid> という名前の OSS バケットを作成し、動的にプロビジョニングされたボリュームとしてバケットを Deployment および StatefulSet にマウントします。

    <clusterid> をクラスタの ID に置き換えます。

    # 次のオブジェクトを作成します:CNFS、StorageClass、Deployment、および StatefulSet。
    cat << EOF | kubectl apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: oss-secret
    stringData:
      akId: "xxxx"     # OSS バケットのマウントに必要な AccessKey ペア。
      akSecret: "xxxx"
    ---
    apiVersion: storage.alibabacloud.com/v1beta1
    kind: ContainerNetworkFileSystem
    metadata:
      name: cnfs-oss-<clusterid>   # CNFS CRD 名をバケット名に設定することをお勧めします。
    spec:
      description: "cnfs-oss"
      type: oss
      reclaimPolicy: Retain # Retain ポリシーのみがサポートされています。 CNFS CRD が削除されても、関連付けられた OSS バケットは保持されます。
      parameters:
        bucketName: cnfs-oss-<clusterid>  # 既存のバケットの名前が指定したバケット名と同じ場合、既存のバケットは CNFS に関連付けられます。 既存の OSS バケットの名前が指定したバケット名と同じでない場合、cnfs-oss-clusterid という名前の新しい OSS バケットが作成されます。 clusterid をクラスタの ID に置き換え、バケット名が重複していないことを確認してください。
        encryptType: "AES256"   # 既存の OSS バケットを使用する場合、既存のバケットの暗号化アルゴリズムは AES-256 に変更されます。 新しい OSS バケットを作成する場合、AES-256 がバケットの暗号化アルゴリズムとして使用されます。
        storageType: "Standard"  # OSS バケットのストレージタイプは Standard です。
        aclType: "private"       # バケット所有者と承認されたユーザーのみがバケットに対する読み取りおよび書き込み権限を持ちます。
    ---
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alibabacloud-cnfs-oss
    parameters:
      containerNetworkFileSystem: cnfs-oss-<clusterid>   # StorageClass は、cnfs-oss-clusterid CNFS CRD に関連付けられた OSS バケットを参照します。
      otherOpts: -o max_stat_cache_size=0 -o allow_other # キャッシュ設定。
      path: /
      # volumeAs: subpath # 指定されたパスの下に各 PV のサブパスが自動的に作成されます。
      csi.storage.k8s.io/node-publish-secret-name: oss-secret      # oss-secret シークレットを CNFS CRD にマウントします。
      csi.storage.k8s.io/node-publish-secret-namespace: default    # oss-secret シークレットが属する名前空間。
    provisioner: ossplugin.csi.alibabacloud.com
    reclaimPolicy: Retain
    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: cnfs-oss-pvc
    spec:
      accessModes:
        - ReadOnlyMany
      storageClassName: alibabacloud-cnfs-oss   # 永続ボリューム要求 (PVC) を alibabacloud-cnfs-oss StorageClass を使用するように設定します。
      resources:
        requests:
          storage: 100Gi
    ---
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: cnfs-oss-deployment
      labels:
        app: nginx
    spec:
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            volumeMounts:
            - mountPath: "/data"
              name: cnfs-oss-pvc
          volumes:
          - name: cnfs-oss-pvc   # cnfs-oss-pvc PVC を Deployment にマウントします。
            persistentVolumeClaim:
              claimName: cnfs-oss-pvc
    ---
    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: cnfs-oss-sts
      labels:
        app: nginx
    spec:
      serviceName: "nginx"
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: nginx
            volumeMounts:
            - mountPath: "/data"
              name: www
      volumeClaimTemplates:
      - metadata:
          name: www
        spec:
          accessModes: [ "ReadOnlyMany" ]
          storageClassName: "alibabacloud-cnfs-oss"   # cnfs-oss-pvc PVC を StatefulSet にマウントします。
          resources:
            requests:
              storage: 100Gi
    EOF

    次の表に、CNFS CRD のパラメータを示します。

    パラメータ

    説明

    description

    CNFS ファイルシステムの説明。

    type

    作成するボリュームのタイプ。

    reclaimPolicy

    OSS バケットの再利用ポリシー。 Retain ポリシーのみがサポートされています。 CNFS CRD が削除されても、関連付けられた OSS バケットは保持されます。

    parameters.bucketName

    OSS バケットの名前。

    parameters.storageType

    OSS バケットのストレージタイプ。 デフォルト値:Standard。 有効な値:

    • Standard:標準ストレージ

    • IA:低頻度アクセス (IA)

    • Archive:アーカイブ

    • ColdArchive:コールドアーカイブ

    説明

    オブジェクトの読み取りまたは書き込みを行う前に、アーカイブまたはコールドアーカイブオブジェクトを解凍する必要があります。

    parameters.redundancyType

    ストレージ冗長タイプ。 デフォルト値:ZRS。 有効な値:

    • LRS:ローカル冗長ストレージ (LRS) は、同じゾーン内の異なる設備の複数のデバイスにデータの複数のコピーを保存します。 LRS は、ハードウェア障害が発生した場合でも、データの耐久性と可用性を保証します。

    • ZRS:ゾーン冗長ストレージ (ZRS) は、同じリージョン内の複数のゾーンにデータの複数のコピーを保存します。 ゾーンが使用できなくなった場合でも、データにアクセスできます。

    重要
    • このパラメータは、storage-operator v1.26.2-1de13b6-aliyun 以降でのみサポートされています。

    • 値を ZRS に設定した場合、コールドアーカイブとディープコールドアーカイブはサポートされません。

    • さまざまなストレージタイプとストレージ冗長タイプの請求ルールの詳細については、「請求対象項目」をご参照ください。

    parameters.encryptType

    OSS バケットの暗号化方式。 有効な値:

    • None:OSS サーバーでは暗号化アルゴリズムは使用されません。

    • AES256:OSS サーバーでは AES-256 アルゴリズムが使用されます。

    • SM4:OSS サーバーでは SM4 アルゴリズムが使用されます。

    parameters.aclType

    OSS バケットで使用されるアクセス制御リスト (ACL) のタイプ。 デフォルト値:private。 有効な値:

    • public-read-write:匿名ユーザーを含むすべてのユーザーが、バケット内のオブジェクトを読み書きできます。 この値を指定する場合は注意してください。

    • public-read:バケット所有者または承認されたユーザーのみがバケット内のオブジェクトを読み書きできます。 他のユーザーは、バケット内のオブジェクトを読み取ることのみができます。 この値を指定する場合は注意してください。

    • private:バケット所有者または承認されたユーザーのみがバケット内のオブジェクトを読み書きできます。 他のユーザーはバケット内のオブジェクトにアクセスできません。

    parameters.enableVersioning

    バケットのバージョン管理ステータス。 有効な値:

    • enabled:バケットのバージョン管理が有効になっています。

    • suspended:バケットのバージョン管理が一時停止されています。

    • None:バケットのバージョン管理が無効になっています。

    重要
    • このパラメータは、storage-operator v1.26.2-1de13b6-aliyun 以降でのみサポートされています。

    • バケットのバージョン管理を有効にすると、バケットの保持ポリシーまたは OSS-HDFS を構成できなくなります。 保持ポリシーまたは OSS-HDFS を構成するには、enableVersioning をNone に設定する必要があります。

    • バケットのバージョン管理がenabled になると、バケットのバージョン管理をdisable にすることはできません。 ただし、バケットのバージョン管理を一時停止することはできます。

    • バケットのバージョン管理を有効にすると、バケット内のすべてのバージョンのオブジェクトのストレージに対して課金されます。 バケットのライフサイクルルールを構成して、バケット内のオブジェクトの履歴バージョンをリサイクルできます。 詳細については、「ライフサイクル」をご参照ください。

  2. 作成された OSS バケットをクエリします。

    kubectl get cnfs/cnfs-oss-<clusterid> -o yaml

    予期される出力:

    apiVersion: storage.alibabacloud.com/v1beta1
    kind: ContainerNetworkFileSystem
    metadata:
      annotations:
        kubectl.kubernetes.io/last-applied-configuration: |
          {"apiVersion":"storage.alibabacloud.com/v1beta1","kind":"ContainerNetworkFileSystem","metadata":{"annotations":{},"name":"cnfs-oss-xxxxxxxxxx"},"spec":{"description":"cnfs-oss","parameters":{"aclType":"private","bucketName":"cnfs-oss-clusterid","encryptType":"AES256","storageType":"Standard"},"reclaimPolicy":"Retain","type":"oss"}}
      creationTimestamp: "2022-09-18T07:02:34Z"
      finalizers:
      - protection.alibabacloud.com/cnfs
      generation: 6
      name: cnfs-oss-****
      resourceVersion: "8091291"
      uid: ca187b2a-3bfa-4a5f-82d8-ca1b1f69****
    spec:
      description: cnfs-oss
      parameters:
        aclType: private
        bucketName: cnfs-oss-****
        encryptType: AES256
        storageType: Standard
      reclaimPolicy: Retain
      type: oss
    status:
      conditions:
      - lastProbeTime: "2022-09-18 15:02:39"
        reason: OSS バケットの初期化が完了しました。
        status: Ready
      fsAttributes:
        accessGroupName: DEFAULT_VPC_GROUP_NAME
        aclType: private
        bucketName: cnfs-oss-****
        encryptType: AES256
        endPoint:
          extranet: oss-****.aliyuncs.com
          internal: oss-****-internal.aliyuncs.com
        regionId: ****
        storageType: Standard
      status: Available

    次の表に、CNFS CRD のパラメータを示します。

    パラメータ

    説明

    status

    CNFS CRD のステータス。 有効な値:

    • Pending:CNFS CRD は保留中です。

    • Creating:CNFS CRD は作成中です。

    • Initialization:CNFS ファイルシステムは作成中です。

    • Available:CNFS CRD は使用可能です。

    • Unavailable:CNFS CRD は使用できません。 CNFS CRD を Available 状態に復元できます。

    • Fatal:CNFS CRD は使用できず、Available 状態に復元できません。

    • Terminating:CNFS CRD は削除中です。

    conditions.lastProbeTime

    最後のプローブが送信された時刻。

    conditions.reason

    現在のステータスの理由。

    conditions.status

    CNFS CRD が使用できる状態かどうかを示します。 有効な値:

    • Ready:CNFS CRD は使用できる状態です。

    • NotReady:CNFS CRD は使用できる状態ではありません。

    fsAttributes.accessGroupName

    マウントポイントで使用される権限グループの名前。 値を DEFAULT_VPC_GROUP_NAME に設定します。 これは、仮想プライベートクラウド (VPC) のデフォルトの権限グループを示します。

    fsAttributes.encryptType

    暗号化方式。 有効な値:

    • None:OSS サーバーでは暗号化アルゴリズムは使用されません。

    • AES256:OSS サーバーでは AES-256 アルゴリズムが使用されます。

    • SM4:OSS サーバーでは SM4 アルゴリズムが使用されます。

    fsAttributes.regionId

    ACK クラスタが存在するリージョン。

    fsAttributes.storageType

    OSS バケットのストレージクラス。 デフォルト値:Standard。 有効な値:

    • Standard:標準ストレージ

    • IA:IA

    • Archive:アーカイブ

    • ColdArchive:コールドアーカイブ

    説明

    オブジェクトの読み取りまたは書き込みを行う前に、アーカイブまたはコールドアーカイブオブジェクトを解凍する必要があります。

    fsAttributes.redundancyType

    ストレージ冗長タイプ。 デフォルト値:ZRS。 有効な値:

    • LRS:ローカル冗長ストレージ (LRS) は、同じゾーン内の異なる設備の複数のデバイスにデータの複数のコピーを保存します。 LRS は、ハードウェア障害が発生した場合でも、データの耐久性と可用性を保証します。

    • ZRS:ゾーン冗長ストレージ (ZRS) は、同じリージョン内の複数のゾーンにデータの複数のコピーを保存します。 ゾーンが使用できなくなった場合でも、データにアクセスできます。

    重要
    • このパラメータは、storage-operator v1.26.2-1de13b6-aliyun 以降でのみサポートされています。

    • 値を ZRS に設定した場合、コールドアーカイブとディープコールドアーカイブはサポートされません。

    • さまざまなストレージタイプとストレージ冗長タイプの請求ルールの詳細については、「請求対象項目」をご参照ください。

    fsAttributes.aclType

    OSS バケットで使用される ACL のタイプ。 デフォルト値:private。

    fsAttributes.endPoint

    CNFS CRD のエンドポイント。 有効な値:

    • extranet:パブリックエンドポイント

    • internal:内部エンドポイント

    fsAttributes.enableVersioning

    バケットのバージョン管理ステータス。 有効な値:

    • enabled:バケットのバージョン管理が有効になっています。

    • suspended:バケットのバージョン管理が一時停止されています。

    • None:バケットのバージョン管理が無効になっています。

    重要
    • このパラメータは、storage-operator v1.26.2-1de13b6-aliyun 以降でのみサポートされています。

    • バケットのバージョン管理を有効にすると、バケットの保持ポリシーまたは OSS-HDFS を構成できなくなります。 保持ポリシーまたは OSS-HDFS を構成するには、enableVersioning を None に設定する必要があります。

    • バケットのバージョン管理が enabled になると、バケットのバージョン管理を disable にすることはできません。 ただし、バケットのバージョン管理を一時停止することはできます。

    • バケットのバージョン管理を有効にすると、バケット内のすべてのバージョンのオブジェクトのストレージに対して課金されます。 バケットのライフサイクルルールを構成して、バケット内のオブジェクトの履歴バージョンをリサイクルできます。 詳細については、「ライフサイクル」をご参照ください。

  3. 作成されたアプリケーションをクエリします。

    kubectl get pod

    予期される出力:

    NAME                                   READY   STATUS    RESTARTS   AGE
    cnfs-oss-deployment-5864fd8d98-4****   1/1     Running   0          2m21s
    cnfs-oss-sts-0                         1/1     Running   0          2m21s
    cnfs-oss-sts-1                         1/1     Running   0          2m16s

    出力は、Deployment および StatefulSet が Running 状態であり、CNFS CRD が Deployment にマウントされていることを示しています。

方法 2:CNFS CRD を作成して既存の OSS バケットを指定する

バケット名を指定することにより、既存の OSS バケットを使用する CNFS CRD を作成します。次に、CNFS CRD を使用して、静的または動的にプロビジョニングされたボリュームとして OSS バケットを Deployment にマウントできます。

  1. 既存の OSS バケットを指定する CNFS CRD を作成します。

    cat <<EOF | kubectl apply -f -
    apiVersion: storage.alibabacloud.com/v1beta1
    kind: ContainerNetworkFileSystem
    metadata:
      name: cnfs-oss-exist-bucket-name
    spec:
      description: "cnfs-oss"
      type: oss
      reclaimPolicy: Retain
      parameters:
        bucketName: bucket-name # 使用する既存の OSS バケットの名前。
    EOF
  2. OSS バケットに関する情報をクエリします。

    kubectl get cnfs/cnfs-oss-exist-bucket-name -o yaml

    予想される出力:

    apiVersion: storage.alibabacloud.com/v1beta1
    kind: ContainerNetworkFileSystem
    metadata:
      annotations:
        kubectl.kubernetes.io/last-applied-configuration: |
          {"apiVersion":"storage.alibabacloud.com/v1beta1","kind":"ContainerNetworkFileSystem","metadata":{"annotations":{},"name":"cnfs-oss-xxxx"},"spec":{"description":"cnfs-oss","parameters":{"bucketName":"exist-bucket-name"},"reclaimPolicy":"Retain","type":"oss"}}
      creationTimestamp: "2022-09-14T09:21:10Z"
      finalizers:
      - protection.alibabacloud.com/cnfs
      generation: 7
      name: cnfs-oss-exist-bucket-name
      resourceVersion: "6504134"
      uid: 921564ac-0cd8-4a89-997d-c2393afd****
    spec:
      description: cnfs-oss
      parameters:
        bucketName: exist-bucket-name
      reclaimPolicy: Retain
      type: oss
    status:
      conditions:
      - lastProbeTime: "2022-09-14 17:00:21"
        reason: The oss bucket is complete initialization.  // OSS バケットの初期化が完了しました。
        status: Ready
      fsAttributes:
        accessGroupName: DEFAULT_VPC_GROUP_NAME
        aclType: private
        bucketName: exist-bucket-name
        encryptType: AES256
        endPoint:
          extranet: oss-****.aliyuncs.com           
          internal: oss-****-internal.aliyuncs.com
        regionId: ****
        storageType: Standard
      status: Available
  3. CNFS CRD を使用して、OSS バケットを動的にプロビジョニングされたボリュームとしてアプリケーションにマウントします。