All Products
Search
Document Center

Container Service for Kubernetes:Kelola siklus hidup bucket OSS

Last Updated:Jun 19, 2026

CNFS mengelola siklus hidup bucket OSS dan menyediakannya sebagai PV melalui manifes Kubernetes.

Tersedia dua metode:

  • Metode 1: Gunakan CNFS untuk membuat bucket OSS baru dan memasangnya ke Deployment dan StatefulSet sebagai volume penyimpanan dinamis.

  • Metode 2: Buat ContainerNetworkFileSystem Custom Resource Definition (CRD) yang mereferensikan bucket OSS yang sudah ada, lalu pasang sebagai volume statis atau dinamis.

Prasyarat

Pastikan Anda memiliki:

  • csi-plugin dan csi-provisioner versi 1.24.2-5b34494d-aliyun atau lebih baru (upgrade)

  • storage-operator versi 1.24.95-e2d0756-aliyun atau lebih baru (upgrade)

Batasan

  • Kebijakan reclaim satu-satunya yang didukung adalah Retain. Menghapus CNFS CRD akan mempertahankan bucket tersebut.

  • Objek Archive dan Cold Archive harus dipulihkan terlebih dahulu sebelum dibaca atau ditulis.

  • Jika Pengendalian versi diaktifkan, Kebijakan retensi dan OSS-HDFS tidak dapat dikonfigurasi. Untuk menggunakannya, atur enableVersioning ke None terlebih dahulu.

  • Setelah Pengendalian versi diatur ke enabled, status tersebut tidak dapat dinonaktifkan, hanya bisa disuspend.

  • Parameter redundancyType dan enableVersioning memerlukan storage-operator v1.26.2-1de13b6-aliyun atau lebih baru.

  • Jika redundancyType bernilai ZRS, Cold Archive dan Deep Cold Archive tidak didukung.

Metode 1: Buat bucket OSS baru dengan CNFS

Membuat bucket OSS bernama cnfs-oss-<clusterid> dan memasangnya ke Deployment dan StatefulSet sebagai volume penyimpanan dinamis.

Jika bucket dengan nama yang ditentukan sudah ada, CNFS akan mengaitkannya dengan objek ContainerNetworkFileSystem alih-alih membuat yang baru.

Buat CNFS CRD dan StorageClass

Buat Secret, ContainerNetworkFileSystem CRD, dan StorageClass. Ganti <clusterid> dengan ID kluster Anda.

cat << EOF | kubectl apply -f -
apiVersion: v1
kind: Secret
metadata:
  name: oss-secret
stringData:
  akId: "xxxx"      # ID AccessKey untuk memasang bucket OSS
  akSecret: "xxxx"  # Secret AccessKey untuk memasang bucket OSS
---
apiVersion: storage.alibabacloud.com/v1beta1
kind: ContainerNetworkFileSystem
metadata:
  name: cnfs-oss-<clusterid>   # Atur nama CNFS CRD agar sesuai dengan nama bucket
spec:
  description: "cnfs-oss"
  type: oss
  reclaimPolicy: Retain         # Hanya Retain yang didukung. Menghapus CRD tetap menyimpan bucket.
  parameters:
    bucketName: cnfs-oss-<clusterid>   # Ganti <clusterid> dengan ID kluster Anda; nama bucket harus unik
    encryptType: "AES256"              # Enkripsi sisi server AES-256
    storageType: "Standard"            # Kelas penyimpanan
    aclType: "private"                 # Hanya pemilik bucket dan pengguna yang berwenang
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: alibabacloud-cnfs-oss
parameters:
  containerNetworkFileSystem: cnfs-oss-<clusterid>           # Referensi ke CNFS CRD
  otherOpts: -o max_stat_cache_size=0 -o allow_other         # Pengaturan cache
  path: /
  # volumeAs: subpath   # Hapus komentar untuk membuat subpath otomatis untuk setiap 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

Parameter CNFS CRD:

Parameter Deskripsi Wajib Default
description Deskripsi sistem file CNFS. Tidak
type Jenis volume. Atur ke oss. Ya
reclaimPolicy Kebijakan reclaim. Hanya Retain yang didukung. Ya
parameters.bucketName Nama bucket OSS. Jika bucket yang sesuai sudah ada, bucket tersebut akan dikaitkan dengan CNFS CRD; jika tidak, bucket baru akan dibuat. Ya
parameters.storageType Kelas penyimpanan. Nilai yang valid: Standard, IA (Infrequent Access), Archive, ColdArchive. Objek Archive dan Cold Archive harus dipulihkan sebelum dibaca/ditulis. Tidak Standard
parameters.redundancyType Jenis redundansi penyimpanan. LRS: zona tunggal; ZRS (zone-redundant): lintas zona. Memerlukan storage-operator v1.26.2-1de13b6-aliyun atau lebih baru. ZRS tidak mendukung Cold Archive atau Deep Cold Archive. Tidak ZRS
parameters.encryptType Algoritma enkripsi sisi server. Nilai yang valid: None, AES256, SM4. Tidak
parameters.aclType Jenis ACL. Nilai yang valid: private (hanya pemilik dan pengguna berwenang), public-read (baca publik; tulis oleh pemilik dan pengguna berwenang), public-read-write (semua pengguna termasuk anonim dapat membaca dan menulis — gunakan dengan hati-hati). Tidak private
parameters.enableVersioning Status Pengendalian versi. Nilai yang valid: enabled, suspended, None . Setelah diaktifkan, tidak dapat dinonaktifkan — hanya bisa disuspend. Mencegah konfigurasi kebijakan retensi atau OSS-HDFS. Memerlukan storage-operator v1.26.2-1de13b6-aliyun atau lebih baru. Lihat Penagihan siklus hidup. Tidak Enabled

Buat PVC dan workload contoh

Buat persistent volume claim (PVC), Deployment, dan StatefulSet untuk memverifikasi bahwa bucket berhasil dipasang.

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

Verifikasi bucket dan workload

Konfirmasi bahwa bucket OSS dan Pod siap digunakan.

Verifikasi CNFS CRD:

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

Output yang diharapkan:

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.status menampilkan Available ketika bucket siap digunakan. Bidang status:

Bidang Deskripsi
status Status CNFS CRD. Nilai yang valid: Pending, Creating, Initialization (membuat sistem file), Available, Unavailable (dapat dipulihkan), Fatal (tidak dapat dipulihkan), Terminating.
conditions.lastProbeTime Waktu probe terakhir.
conditions.reason Alasan dari status saat ini.
conditions.status Kesiapan: Ready (tersedia) atau NotReady.
fsAttributes.accessGroupName Grup izin untuk titik pemasangan. Saat ini hanya DEFAULT_VPC_GROUP_NAME (grup VPC default) yang didukung.
fsAttributes.encryptType Algoritma enkripsi: None, AES256, atau SM4.
fsAttributes.regionId Wilayah kluster ACK.
fsAttributes.storageType Kelas penyimpanan bucket: Standard, IA, Archive, atau ColdArchive.
fsAttributes.redundancyType Jenis redundansi penyimpanan: LRS (penyimpanan redundan lokal) atau ZRS (penyimpanan redundan zona).
fsAttributes.aclType Jenis ACL bucket.
fsAttributes.endPoint Endpoint: extranet (publik) dan internal (jaringan internal).
fsAttributes.enableVersioning Status Pengendalian versi: enabled, suspended, atau None.

Verifikasi pod:

kubectl get pod

Output yang diharapkan:

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

Semua pod menampilkan Running, yang mengonfirmasi bahwa Deployment dan StatefulSet telah berhasil memasang bucket OSS.

Metode 2: Gunakan bucket OSS yang sudah ada

Membuat CNFS CRD yang mereferensikan bucket OSS yang sudah ada berdasarkan namanya.

Buat 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   # Nama bucket OSS yang sudah ada
EOF

Verifikasi CNFS CRD

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

Output yang diharapkan:

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

Pasang bucket ke workload

Pasang bucket ke Deployment Anda sebagai volume statis atau dinamis dengan mengikuti langkah pada Buat PVC dan workload contoh (Metode 1), menggunakan CNFS CRD dari metode ini.

Langkah selanjutnya