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

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

最終更新日:Jun 19, 2026

CNFS は、Kubernetes マニフェストを通じて OSS バケットのライフサイクルを管理し、PV としてプロビジョニングします。

次の 2 つの方法を利用できます。

  • 方法 1:CNFS を使用して新しい OSS バケットを作成し、動的にプロビジョニングされたボリュームとして Deployment と StatefulSet にマウントします。

  • 方法 2:既存の OSS バケットを参照する CNFS カスタムリソース定義 (CRD) を作成し、静的または動的にプロビジョニングされたボリュームとしてマウントします。

前提条件

以下の要件を満たしていることを確認してください。

  • csi-plugin および csi-provisioner がバージョン 1.24.2-5b34494d-aliyun 以降であること (アップグレード)

  • storage-operator がバージョン 1.24.95-e2d0756-aliyun 以降であること (アップグレード)

制限事項

  • サポートされているリクレームポリシーは Retain のみです。CNFS CRD を削除してもバケットは保持されます。

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

  • バージョニングが有効な場合、リテンションポリシーおよび OSS-HDFS は設定できません。これらを使用するには、まず enableVersioningNone に設定してください。

  • バージョニングを enabled に設定すると、無効化することはできず、中断のみが可能です。

  • redundancyType および enableVersioning パラメータには、storage-operator v1.26.2-1de13b6-aliyun 以降が必要です。

  • redundancyTypeZRS の場合、コールドアーカイブおよびディープコールドアーカイブはサポートされません。

方法 1:CNFS で新しい OSS バケットを作成

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

指定した名前のバケットが既に存在する場合、CNFS は新しいバケットを作成せず、ContainerNetworkFileSystem オブジェクトに関連付けます。

CNFS CRD と StorageClass の作成

Secret、ContainerNetworkFileSystem CRD、および StorageClass を作成します。<clusterid> をご自身のクラスター ID に置き換えてください。

cat << EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
  name: oss-secret
stringData:
  akId: "xxxx"      # OSS バケットをマウントするための AccessKey ID
  akSecret: "xxxx"  # OSS バケットをマウントするための AccessKey Secret
---
apiVersion: storage.alibabacloud.com/v1beta1
kind: ContainerNetworkFileSystem
metadata:
  name: cnfs-oss-<clusterid>   # CNFS CRD 名をバケット名と一致させる
spec:
  description: "cnfs-oss"
  type: oss
  reclaimPolicy: Retain         # Retain のみサポート。CRD を削除してもバケットは保持されます。
  parameters:
    bucketName: cnfs-oss-<clusterid>   #  をご自身のクラスター ID に置き換えてください。バケット名は一意である必要があります
    encryptType: "AES256"              # AES-256 サーバー側の暗号化
    storageType: "Standard"            # ストレージクラス
    aclType: "private"                 # バケット所有者および承認されたユーザーのみ
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alibabacloud-cnfs-oss
parameters:
  containerNetworkFileSystem: cnfs-oss-<clusterid>           # CNFS CRD への参照
  otherOpts: -o max_stat_cache_size=0 -o allow_other         # キャッシュ設定
  path: /
  # volumeAs: subpath   # 各 PV に対してサブパスを自動作成する場合はコメントを解除
  csi.storage.k8s.io/node-publish-secret-name: oss-secret
  csi.storage.k8s.io/node-publish-secret-namespace: default
provisioner: ossplugin.csi.alibabacloud.com
reclaimPolicy: Retain
EOF

CNFS CRD パラメータ:

パラメータ 説明 必須 デフォルト値
description CNFS ファイルシステムの説明。 いいえ
type ボリュームタイプ。 oss に設定します。 はい
reclaimPolicy リクレームポリシー。 Retain のみサポートされます。 はい
parameters.bucketName OSS バケット名。一致するバケットが存在する場合は CNFS CRD に関連付けられ、それ以外の場合は新しいバケットが作成されます。 はい
parameters.storageType ストレージクラス。有効な値:StandardIA (低頻度アクセス)、ArchiveColdArchive。アーカイブおよびコールドアーカイブのオブジェクトは、読み書きの前に復元する必要があります。 いいえ Standard
parameters.redundancyType ストレージ冗長化タイプ。LRS (ローカル冗長ストレージ) または ZRS (ゾーン冗長ストレージ)。storage-operator v1.26.2-1de13b6-aliyun 以降が必要です。ZRS はコールドアーカイブおよびディープコールドアーカイブをサポートしません。 いいえ ZRS
parameters.encryptType サーバー側の暗号化アルゴリズム。有効な値:NoneAES256SM4 いいえ
parameters.aclType ACL タイプ。有効な値:private (所有者および承認されたユーザーのみ)、public-read (公開読み取り、所有者および承認されたユーザーが書き込み)、public-read-write (匿名ユーザーを含むすべてのユーザーが読み書き可能 — 慎重に使用してください)。 いいえ private
parameters.enableVersioning バージョニングステータス。有効な値:enabledsuspendedNone。一度有効にすると無効化できず、中断のみが可能です。リテンションポリシーまたは OSS-HDFS の設定を妨げます。storage-operator v1.26.2-1de13b6-aliyun 以降が必要です。ライフサイクル課金 をご参照ください。 いいえ enabled

PVC とサンプルワークロードの作成

永続ボリューム要求 (PVC)、Deployment、および StatefulSet を作成して、バケットが正しくマウントされることを確認します。

cat << EOF | kubectl apply -f -
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: cnfs-oss-pvc
spec:
  accessModes:
    - ReadOnlyMany
  storageClassName: alibabacloud-cnfs-oss
  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
        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"
      resources:
        requests:
          storage: 100Gi
EOF

バケットとワークロードの検証

OSS バケットと Pod が Ready 状態であることを確認します。

CNFS CRD の検証:

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

期待される出力:

apiVersion: storage.alibabacloud.com/v1beta1
kind: ContainerNetworkFileSystem
...
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

status.statusAvailable の場合、バケットは利用可能です。ステータスフィールド:

フィールド 説明
status CNFS CRD のステータス。有効な値:Pending, Creating, Initialization (ファイルシステムの作成中), Available, Unavailable (回復可能), Fatal (回復不可能), Terminating
conditions.lastProbeTime 最後のプローブタイムスタンプ。
conditions.reason 現在のステータスの理由。
conditions.status 準備状態:Ready (利用可能) または NotReady
fsAttributes.accessGroupName マウントポイントの権限グループ。現時点では、DEFAULT_VPC_GROUP_NAME (デフォルト VPC グループ) のみがサポートされています。
fsAttributes.encryptType 暗号化アルゴリズム:NoneAES256、または SM4
fsAttributes.regionId ACK クラスターのリージョン。
fsAttributes.storageType バケットのストレージクラス:StandardIAArchive、または ColdArchive
fsAttributes.redundancyType ストレージ冗長化タイプ:LRS (ローカル冗長ストレージ) または ZRS (ゾーン冗長ストレージ)。
fsAttributes.aclType バケット ACL タイプ。
fsAttributes.endPoint エンドポイント:extranet (パブリック) および internal (内部ネットワーク)。
fsAttributes.enableVersioning バージョニングステータス:enabledsuspended、または None

Pod の検証:

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

すべての Pod が Running 状態であれば、Deployment と StatefulSet が OSS バケットを正常にマウントしたことが確認できます。

方法 2:既存の OSS バケットを使用

既存の OSS バケットを名前で参照する CNFS CRD を作成します。

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

CNFS CRD の検証

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

期待される出力:

apiVersion: storage.alibabacloud.com/v1beta1
kind: ContainerNetworkFileSystem
...
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

ワークロードへのバケットのマウント

この方法の CNFS CRD を使用して、PVC とサンプルワークロードの作成 (方法 1) に従い、バケットを静的または動的ボリュームとして Deployment にマウントします。

次のステップ

  • オブジェクトを移行または有効期限切れにする ライフサイクルルール を設定します。

  • さまざまなストレージクラスおよび冗長化タイプの 課金項目 をご確認ください。