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:
Metode 1: Gunakan CNFS untuk membuat bucket OSS bernama cnfs-oss-
Gunakan CNFS untuk membuat bucket OSS yang dapat dipasang ke klaster Anda sebagai volume persisten (PV) yang diatur secara dinamis. Buat bucket OSS bernama
cnfs-oss-<UUID e.g. clusterid>dan pasang ke Deployment dan StatefulSet sebagai volume yang diatur secara dinamis.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.
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 bernamacnfs-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>
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 EOFTabel 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
CatatanAnda 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.
PentingParameter 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.
PentingParameter 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 di
aktifkanuntuk bucket, Anda tidak dapatmenonaktifkanversioning 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.
Kueri bucket OSS yang telah dibuat.
kubectl get cnfs/cnfs-oss-<clusterid> -o yamlOutput 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: AvailableTabel 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
CatatanAnda 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.
PentingParameter 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.
PentingParameter 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 di
aktifkanuntuk bucket, Anda tidak dapatmenonaktifkanversioning 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.
Kueri aplikasi yang telah dibuat.
kubectl get podOutput 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 2m16sOutput 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.
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. EOFKueri informasi tentang bucket OSS.
kubectl get cnfs/cnfs-oss-exist-bucket-name -o yamlOutput 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: AvailableGunakan CRD CNFS untuk memasang bucket OSS sebagai volume yang diatur secara dinamis ke aplikasi.
Untuk informasi lebih lanjut, lihat Metode 1: Gunakan CNFS untuk membuat bucket OSS bernama cnfs-oss-.