全部产品
Search
文档中心

Container Service for Kubernetes:Kelola siklus hidup bucket OSS

更新时间:Jul 06, 2025

Container Service for Kubernetes (ACK) menggunakan Container Network File System (CNFS) untuk mengelola secara terpisah siklus hidup bucket Object Storage Service (OSS). Topik ini menjelaskan cara menggunakan CNFS untuk mengelola siklus hidup bucket OSS dan cara menerapkan CNFS dalam beban kerja.

Prasyarat

  • Versi csi-plugin dan csi-provisioner adalah 1.24.2-5b34494d-aliyun atau yang lebih baru. Untuk informasi lebih lanjut tentang cara memperbarui csi-plugin dan csi-provisioner, lihat Perbarui csi-plugin dan csi-provisioner.

  • Versi storage-operator adalah 1.24.95-e2d0756-aliyun atau yang lebih baru. Untuk informasi lebih lanjut tentang cara memperbarui storage-operator, lihat Kelola Komponen.

Pendahuluan

Untuk mengelola siklus hidup bucket OSS dengan menggunakan CNFS, Anda dapat memilih salah satu dari metode berikut:

Catatan

Saat membuat CRD CNFS, batasan berikut berlaku untuk BucketName: cnfs-oss-<UUID e.g. clusterid>:

  • Jika bucket OSS yang sudah ada memiliki nama yang sama dengan nama bucket yang ditentukan, bucket OSS tersebut akan dikaitkan dengan objek ContainerNetworkFileSystem.

  • Jika tidak ada bucket OSS yang sudah ada dengan nama yang sama dengan nama bucket yang ditentukan, bucket OSS baru dengan nama tersebut akan dibuat dan dikaitkan dengan objek ContainerNetworkFileSystem yang Anda buat.

    Sebagai contoh, jika Anda menentukan cnfs-oss-<clusterid> sebagai nama bucket, sistem akan membuat bucket OSS bernama cnfs-oss-<clusterid>. <clusterid> adalah ID klaster Anda. Pastikan nama bucket unik.

Metode 1: Gunakan CNFS untuk membuat bucket OSS bernama cnfs-oss-<UUID e.g. clusterid>

  1. Buat bucket OSS bernama cnfs-oss-<UUID e.g. clusterid> menggunakan CNFS dan pasang bucket tersebut ke Deployment dan StatefulSet sebagai volume yang diatur secara dinamis.

    Ganti <clusterid> dengan ID klaster Anda.

    # Buat objek berikut: CNFS, StorageClass, Deployment, dan StatefulSet. 
    cat << EOF | kubectl apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: oss-secret
    stringData:
      akId: "xxxx"     # Pasangan AccessKey yang diperlukan untuk memasang bucket OSS. 
      akSecret: "xxxx"
    ---
    apiVersion: storage.alibabacloud.com/v1beta1
    kind: ContainerNetworkFileSystem
    metadata:
      name: cnfs-oss-<clusterid>   # Kami sarankan Anda menetapkan nama CRD CNFS menjadi nama bucket. 
    spec:
      description: "cnfs-oss"
      type: oss
      reclaimPolicy: Retain # Hanya kebijakan Retain yang didukung. Jika CRD CNFS dihapus, bucket OSS yang terkait tetap dipertahankan. 
      parameters:
        bucketName: cnfs-oss-<clusterid>  # Jika bucket yang sudah ada memiliki nama yang sama dengan nama bucket yang Anda tentukan, bucket yang sudah ada akan dikaitkan dengan CNFS. Jika tidak ada bucket OSS yang sudah ada dengan nama yang sama dengan nama bucket yang Anda tentukan, bucket OSS baru bernama cnfs-oss-clusterid akan dibuat. Ganti clusterid dengan ID klaster Anda dan pastikan nama bucket unik. 
        encryptType: "AES256"   # Jika bucket OSS yang sudah ada digunakan, algoritma enkripsi bucket yang sudah ada diubah menjadi AES-256. Jika bucket OSS baru dibuat, AES-256 digunakan sebagai algoritma enkripsi untuk bucket tersebut. 
        storageType: "Standard"  # Jenis penyimpanan bucket OSS adalah Standard. 
        aclType: "private"       # Hanya pemilik bucket dan pengguna yang berwenang yang memiliki izin baca dan tulis pada bucket. 
    ---
    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alibabacloud-cnfs-oss
    parameters:
      containerNetworkFileSystem: cnfs-oss-<clusterid>   # StorageClass merujuk bucket OSS yang dikaitkan dengan CRD CNFS cnfs-oss-clusterid. 
      otherOpts: -o max_stat_cache_size=0 -o allow_other # Pengaturan cache. 
      path: /
      # volumeAs: subpath # Subpath dibuat secara otomatis untuk setiap PV di bawah jalur yang ditentukan.
      csi.storage.k8s.io/node-publish-secret-name: oss-secret      # Pasang Secret oss-secret ke CRD CNFS. 
      csi.storage.k8s.io/node-publish-secret-namespace: default    # Namespace tempat Secret oss-secret berada. 
    provisioner: ossplugin.csi.alibabacloud.com
    reclaimPolicy: Retain
    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: cnfs-oss-pvc
    spec:
      accessModes:
        - ReadOnlyMany
      storageClassName: alibabacloud-cnfs-oss   # Tetapkan persistent volume claim (PVC) untuk menggunakan StorageClass 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   # Pasang PVC cnfs-oss-pvc ke 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"   # Pasang PVC cnfs-oss-pvc ke StatefulSet. 
          resources:
            requests:
              storage: 100Gi
    EOF

    Tabel berikut menjelaskan parameter CRD CNFS.

    Parameter

    Deskripsi

    description

    Deskripsi file system CNFS.

    type

    Jenis volume yang ingin Anda buat.

    reclaimPolicy

    Kebijakan pengambilan kembali bucket OSS. Hanya kebijakan Retain yang didukung. Jika CRD CNFS dihapus, bucket OSS yang terkait tetap dipertahankan.

    parameters.bucketName

    Nama bucket OSS.

    parameters.storageType

    Jenis penyimpanan bucket OSS. Nilai default: Standard. Nilai valid:

    • Standard: Standard

    • IA: Infrequent Access (IA)

    • Archive: Arsip

    • ColdArchive: Penyimpanan Arsip Dingin

    Catatan

    Anda harus memulihkan objek Arsip atau Penyimpanan Arsip Dingin sebelum dapat membaca atau menulis objek tersebut.

    parameters.redundancyType

    Jenis redundansi penyimpanan. Nilai default: ZRS. Nilai valid:

    • LRS: Penyimpanan redundan lokal (LRS) menyimpan beberapa salinan data Anda pada perangkat berbeda di fasilitas yang sama di zona yang sama. LRS memastikan ketahanan dan ketersediaan data meskipun terjadi kegagalan perangkat keras.

    • ZRS: Penyimpanan redundan zona (ZRS) menyimpan beberapa salinan data Anda di beberapa zona di wilayah yang sama. Data Anda tetap dapat diakses meskipun sebuah zona tidak tersedia.

    Penting
    • Parameter ini hanya didukung oleh storage-operator v1.26.2-1de13b6-aliyun dan yang lebih baru.

    • Jika Anda menetapkan nilainya menjadi ZRS, Penyimpanan Arsip Dingin dan Penyimpanan Arsip Sangat Dingin tidak didukung.

    • Untuk informasi lebih lanjut tentang aturan penagihan untuk jenis penyimpanan dan jenis redundansi penyimpanan yang berbeda, lihat Item yang Dapat Ditagih.

    parameters.encryptType

    Metode enkripsi bucket OSS. Nilai valid:

    • None: Tidak ada algoritma enkripsi yang digunakan oleh server OSS.

    • AES256: Algoritma AES-256 digunakan oleh server OSS.

    • SM4: Algoritma SM4 digunakan oleh server OSS.

    parameters.aclType

    Jenis daftar kontrol akses (ACL) yang digunakan oleh bucket OSS. Nilai default: private. Nilai valid:

    • public-read-write: Semua pengguna, termasuk pengguna anonim, dapat membaca dan menulis objek di bucket. Berhati-hatilah saat menentukan nilai ini.

    • public-read: Hanya pemilik bucket atau pengguna yang berwenang yang dapat membaca dan menulis objek di bucket. Pengguna lain hanya dapat membaca objek di bucket. Berhati-hatilah saat menentukan nilai ini.

    • private: Hanya pemilik bucket atau pengguna yang berwenang yang dapat membaca dan menulis objek di bucket. Pengguna lain tidak dapat mengakses objek di bucket.

    parameters.enableVersioning

    Status versioning bucket. Nilai valid:

    • enabled: Versioning diaktifkan untuk bucket.

    • suspended: Versioning ditangguhkan untuk bucket.

    • None: Versioning dinonaktifkan untuk bucket.

    Penting
    • Parameter ini hanya didukung oleh storage-operator v1.26.2-1de13b6-aliyun dan yang lebih baru.

    • Jika Anda mengaktifkan versioning untuk bucket, Anda tidak dapat lagi mengonfigurasi kebijakan retensi atau OSS-HDFS untuk bucket. Untuk mengonfigurasi kebijakan retensi atau OSS-HDFS, Anda harus menetapkan enableVersioning menjadi None.

    • Setelah versioning diaktifkan untuk bucket, Anda tidak dapat menonaktifkan versioning untuk bucket. Namun, Anda dapat menangguhkan versioning untuk bucket.

    • Jika Anda mengaktifkan versioning untuk bucket, Anda akan dikenakan biaya untuk penyimpanan semua versi objek di bucket. Anda dapat mengonfigurasi aturan siklus hidup untuk bucket untuk mendaur ulang versi historis objek di bucket. Untuk informasi lebih lanjut, lihat Siklus Hidup.

  2. Kueri bucket OSS yang telah dibuat.

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

    Output yang diharapkan:

    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

    Tabel berikut menjelaskan parameter CRD CNFS.

    Parameter

    Deskripsi

    status

    Status CRD CNFS. Nilai valid:

    • Pending: CRD CNFS sedang menunggu.

    • Creating: CRD CNFS sedang dibuat.

    • Initialization: File system CNFS sedang dibuat.

    • Available: CRD CNFS tersedia.

    • Unavailable: CRD CNFS tidak tersedia. Anda dapat memulihkan CRD CNFS ke status Available.

    • Fatal: CRD CNFS tidak tersedia dan tidak dapat dipulihkan ke status Available.

    • Terminating: CRD CNFS sedang dihapus.

    conditions.lastProbeTime

    Waktu pengiriman probe terakhir.

    conditions.reason

    Alasan status saat ini.

    conditions.status

    Menunjukkan apakah CRD CNFS siap digunakan. Nilai valid:

    • Ready: CRD CNFS siap digunakan.

    • NotReady: CRD CNFS belum siap digunakan.

    fsAttributes.accessGroupName

    Nama grup izin yang digunakan oleh titik pemasangan. Tetapkan nilainya menjadi DEFAULT_VPC_GROUP_NAME. Ini menunjukkan grup izin default untuk virtual private clouds (VPC).

    fsAttributes.encryptType

    Metode enkripsi. Nilai valid:

    • None: Tidak ada algoritma enkripsi yang digunakan oleh server OSS.

    • AES256: Algoritma AES-256 digunakan oleh server OSS.

    • SM4: Algoritma SM4 digunakan oleh server OSS.

    fsAttributes.regionId

    Wilayah tempat klaster ACK Anda berada.

    fsAttributes.storageType

    Kelas penyimpanan bucket OSS. Nilai default: Standard. Nilai valid:

    • Standard: Standard

    • IA: IA

    • Archive: Arsip

    • ColdArchive: Penyimpanan Arsip Dingin

    Catatan

    Anda harus memulihkan objek Arsip atau Penyimpanan Arsip Dingin sebelum dapat membaca atau menulis objek tersebut.

    fsAttributes.redundancyType

    Jenis redundansi penyimpanan. Nilai default: ZRS. Nilai valid:

    • LRS: Penyimpanan redundan lokal (LRS) menyimpan beberapa salinan data Anda pada perangkat berbeda di fasilitas yang sama di zona yang sama. LRS memastikan ketahanan dan ketersediaan data meskipun terjadi kegagalan perangkat keras.

    • ZRS: Penyimpanan redundan zona (ZRS) menyimpan beberapa salinan data Anda di beberapa zona di wilayah yang sama. Data Anda tetap dapat diakses meskipun sebuah zona tidak tersedia.

    Penting
    • Parameter ini hanya didukung oleh storage-operator v1.26.2-1de13b6-aliyun dan yang lebih baru.

    • Jika Anda menetapkan nilainya menjadi ZRS, Penyimpanan Arsip Dingin dan Penyimpanan Arsip Sangat Dingin tidak didukung.

    • Untuk informasi lebih lanjut tentang aturan penagihan untuk jenis penyimpanan dan jenis redundansi penyimpanan yang berbeda, lihat Item yang Dapat Ditagih.

    fsAttributes.aclType

    Jenis ACL yang digunakan oleh bucket OSS. Nilai default: private.

    fsAttributes.endPoint

    Titik akhir CRD CNFS. Nilai valid:

    • extranet: endpoint publik

    • internal: endpoint internal

    fsAttributes.enableVersioning

    Status versioning bucket. Nilai valid:

    • enabled: Versioning diaktifkan untuk bucket.

    • suspended: Versioning ditangguhkan untuk bucket.

    • None: Versioning dinonaktifkan untuk bucket.

    Penting
    • Parameter ini hanya didukung oleh storage-operator v1.26.2-1de13b6-aliyun dan yang lebih baru.

    • Jika Anda mengaktifkan versioning untuk bucket, Anda tidak dapat lagi mengonfigurasi kebijakan retensi atau OSS-HDFS untuk bucket. Untuk mengonfigurasi kebijakan retensi atau OSS-HDFS, Anda harus menetapkan enableVersioning menjadi None.

    • Setelah versioning diaktifkan untuk bucket, Anda tidak dapat menonaktifkan versioning untuk bucket. Namun, Anda dapat menangguhkan versioning untuk bucket.

    • Jika Anda mengaktifkan versioning untuk bucket, Anda akan dikenakan biaya untuk penyimpanan semua versi objek di bucket. Anda dapat mengonfigurasi aturan siklus hidup untuk bucket untuk mendaur ulang versi historis objek di bucket. Untuk informasi lebih lanjut, lihat Siklus Hidup.

  3. Kueri aplikasi yang telah dibuat.

    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

    Output menunjukkan bahwa Deployment dan StatefulSet berada dalam status Running, dan CRD CNFS telah dipasang pada Deployment.

Metode 2: Buat CRD CNFS untuk menentukan bucket OSS yang sudah ada

Buat CRD CNFS untuk menggunakan bucket OSS yang sudah ada dengan menentukan nama bucket. Kemudian, Anda dapat menggunakan CRD CNFS untuk memasang bucket OSS ke Deployment sebagai volume yang diatur secara statis atau dinamis.

  1. Buat CRD CNFS yang menentukan bucket OSS yang sudah ada.

    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 yang ingin Anda gunakan. 
    EOF
  2. Kueri informasi tentang bucket OSS.

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

    Output yang diharapkan:

    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. Gunakan CRD CNFS untuk memasang bucket OSS sebagai volume yang diatur secara dinamis ke aplikasi.