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

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

最終更新日:Dec 05, 2024

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

前提条件

概要

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

  • 方法1: CNFSを使用してcnfs-OSS-formatという名前のossバケットを作成

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

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

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

説明

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

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

  • 指定したバケット名と同じ名前の既存のOSSバケットがない場合、指定した名前の新しいOSSバケットが作成され、作成したContainerNetworkFileSystemオブジェクトに関連付けられます。 たとえば、バケット名としてcnfs-oss-<clusterid> を指定した場合、システムはcnfs-OSS-<clusterid> という名前のossバケットを作成します。 <clusterid> をクラスターのIDに置き換えます。 バケット名が一意であることを確認してください。

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

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

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

    # Create the following objects: a CNFS, a StorageClass, a Deployment, and a StatefulSet. 
    cat << EOF | kubectl apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: oss-secret
    stringData:
      akId: "xxxx"     # The AccessKey pair that is required for mounting the OSS bucket. 
      akSecret: "xxxx"
    ---
    apiVersion: storage.alibabacloud.com/v1beta1
    kind: ContainerNetworkFileSystem
    metadata:
      name: cnfs-oss-<clusterid>   # We recommend that you set the CNFS CRD name to the bucket name. 
    spec:
      description: "cnfs-oss"
      type: oss
      reclaimPolicy: Retain # Only the Retain policy is supported. If the CNFS CRD is deleted, the associated OSS bucket is retained. 
      parameters:
        bucketName: cnfs-oss-<clusterid>  # If an existing bucket has the same name as the bucket name that you specify, the existing bucket is associated with the CNFS. If no existing OSS bucket has the same name as the bucket name that you specify, a new OSS bucket named cnfs-oss-clusterid is created. Replace clusterid with the ID of your cluster and make sure that the bucket name is unique. 
        encryptType: "AES256"   # If an existing OSS bucket is used, the encryption algorithm of the existing bucket is changed to AES-256. If a new OSS bucket is created, AES-256 is used as the encryption algorithm for the bucket. 
        storageType: "Standard"  # The storage type of the OSS bucket is Standard. 
        aclType: "private"       # Only the bucket owner and authorized users have read and write permissions on the bucket. 
    ---
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alibabacloud-cnfs-oss
    parameters:
      containerNetworkFileSystem: cnfs-oss-<clusterid>   # The StorageClass references the OSS bucket that is associated with the cnfs-oss-clusterid CNFS CRD. 
      otherOpts: -o max_stat_cache_size=0 -o allow_other # Cache settings. 
      path: /
      # volumeAs: subpath # A subpath is automatically created for each PV under the specified path.
      csi.storage.k8s.io/node-publish-secret-name: oss-secret      # Mount the oss-secret Secret to the CNFS CRD. 
      csi.storage.k8s.io/node-publish-secret-namespace: default    # The namespace to which the oss-secret Secret belongs. 
    provisioner: ossplugin.csi.alibabacloud.com
    reclaimPolicy: Retain
    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: cnfs-oss-pvc
    spec:
      accessModes:
        - ReadOnlyMany
      storageClassName: alibabacloud-cnfs-oss   # Set the persistent volume claim (PVC) to use the 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   # Mount the cnfs-oss-pvc PVC to the 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"   # Mount the cnfs-oss-pvc PVC to the StatefulSet. 
          resources:
            requests:
              storage: 100Gi
    EOF

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

    パラメーター

    説明

    説明

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

    タイプ

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

    reclaimPolicy

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

    パラメーター。bucketName

    OSS バケットの名前。

    parameters.storageType

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

    • スタンダード: スタンダード

    • IA: まれなアクセス (IA)

    • アーカイブ: Archive

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

    説明

    オブジェクトを読み書きする前に、アーカイブまたはコールドアーカイブオブジェクトを復元する必要があります。

    パラメーター. redundancyType

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

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

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

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

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

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

    parameters.encryptType

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

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

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

    • SM4: SM4アルゴリズムはOSSサーバーによって使用されます。

    parameters.aclType

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

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

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

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

    パラメーター。enableVersioning

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

    • enabled: バケットのバージョン管理が有効です。

    • suspended: バケットのバージョン管理が中断されています。

    • なし: バケットのバージョン管理は無効です。

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

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

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

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

  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: The oss bucket is complete initialization.
        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のステータス。 有効な値:

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

    • 作成中: CNFS CRDが作成中です。

    • 初期化: CNFSファイルシステムが作成中です。

    • 利用可能: CNFS CRDが利用可能です。

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

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

    • 終了: CNFS CRDは削除中です。

    conditions.lastProbeTime

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

    条件. reason

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

    conditions.status

    CNFS CRDが使用可能かどうかを示します。 有効な値:

    • 準備完了: CNFS CRDは使用準備完了です。

    • NotReady: CNFS CRDは使用の準備ができていません。

    fsAttributes.accessGroupName

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

    fsAttributes.encryptType

    暗号化方法。 有効な値:

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

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

    • SM4: SM4アルゴリズムはOSSサーバーによって使用されます。

    fsAttributes.regionId

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

    fsAttributes.storageType

    OSSバケットのストレージクラス。 デフォルト値: 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のエンドポイント。 有効な値:

    • エクストラネット: パブリックエンドポイント

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

    fsAttributes.enableVersioning

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

    • enabled: バケットのバージョン管理が有効です。

    • suspended: バケットのバージョン管理が中断されています。

    • なし: バケットのバージョン管理は無効です。

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

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

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

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

  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バケットを指定する

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

  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 # The name of the existing OSS bucket that you want to use. 
    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.
        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バケットを動的にプロビジョニングされたボリュームとしてアプリケーションにマウントします。