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:
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
enableVersioningkeNoneterlebih dahulu. -
Setelah Pengendalian versi diatur ke
enabled, status tersebut tidak dapat dinonaktifkan, hanya bisa disuspend. -
Parameter
redundancyTypedanenableVersioningmemerlukan storage-operator v1.26.2-1de13b6-aliyun atau lebih baru. -
Jika
redundancyTypebernilaiZRS, 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
-
Konfigurasikan aturan siklus hidup untuk mentransisi atau menghapus objek.
-
Tinjau item penagihan untuk berbagai kelas penyimpanan dan jenis redundansi.