Penskalaan manual volume persisten NAS memerlukan intervensi manusia. Fitur auto-scaling dari Container Network File System (CNFS) lebih efisien karena memungkinkan Anda menetapkan kebijakan untuk secara otomatis memicu skala keluar saat penggunaan penyimpanan mencapai ambang batas tertentu, sehingga menyediakan manajemen kapasitas elastis.
Cara kerja
Penskalaan otomatis volume persisten NAS ditangani oleh komponen storage-operator dan tidak memerlukan perubahan pada kode bisnis Anda. Alur kerja utamanya adalah sebagai berikut.
|
Penerapan
Komponen penyimpanan memenuhi persyaratan berikut:
csi-plugin dan csi-provisioner: Versi v1.20.5-ff6490f-aliyun atau yang lebih baru.
Untuk meningkatkan komponen, lihat Upgrade CSI components.
storage-operator: Versi v1.18.8.56-2aa33ba-aliyun atau yang lebih baru.
Untuk meningkatkan komponen, lihat Manage the storage-operator component.
Jika Anda menggunakan versi storage-operator yang lebih lama dari v1.33.1, Anda juga harus memodifikasi ConfigMap secara manual untuk mengaktifkan fitur auto-scaling.
cnfs-controller: Komponen ini telah diinstal.
Ini adalah komponen terkelola yang diinstal secara default. Pastikan komponen ini belum di-uninstall.
CNFS telah dibuat dan statusnya Available. Untuk informasi selengkapnya, lihat bagian tentang pembuatan CNFS di Manage NAS file systems with CNFS.
Langkah 1: Tentukan kebijakan skala keluar volume persisten NAS
Menentukan kebijakan skala keluar merupakan inti dari auto-scaling. Pada langkah ini, Anda membuat kebijakan yang menetapkan kondisi pemicu dan perilaku skala keluar.
Gunakan templat YAML berikut untuk membuat StorageAutoScalerPolicy.
Kebijakan ini memicu operasi auto-scaling ketika penggunaan kapasitas PVC yang memiliki labelapp: nginxdi namespacedefaultataunginxmelebihi 80%. Setiap skala keluar meningkatkan kapasitas saat ini sebesar 100%, hingga maksimum 200 GiB.
cat << EOF | kubectl apply -f -
apiVersion: storage.alibabacloud.com/v1alpha1
kind: StorageAutoScalerPolicy
metadata:
name: hybrid-expand-policy
spec:
# Terapkan kebijakan ini ke PVC yang sesuai menggunakan pemilih label.
pvcSelector:
matchLabels:
app: nginx # Harus sama dengan label yang dikonfigurasi untuk PVC dan deployment.
# Namespace tempat kebijakan berlaku.
namespaces:
- default
- nginx
# Kondisi yang memicu skala keluar.
conditions:
- name: condition1
key: volume-capacity-used-percentage # Metrik pemantauan: persentase penggunaan kapasitas.
operator: Gt # Operator perbandingan: Gt (Greater than).
values:
- "80" # Ambang batas: 80%.
# Aksi yang dilakukan ketika kondisi terpenuhi.
actions:
- name: action1
type: volume-expand # Jenis aksi: skala keluar.
params:
scale: 100% # Ukuran langkah penskalaan: Tambahkan 100% dari kapasitas saat ini.
limits: 200Gi # Batas kapasitas: Kapasitas total setelah skala keluar tidak boleh melebihi 200 GiB.
EOFParameter | Deskripsi |
| Mencocokkan PVC yang dikenai kebijakan skala keluar ini menggunakan pemilih label. |
| Daftar namespace tempat kebijakan berlaku. Logika OR diterapkan untuk beberapa namespace. Jika parameter ini tidak dikonfigurasi, nilai default-nya adalah default. |
| Aturan pemicu yang terdiri dari satu atau beberapa pernyataan kondisional (
|
| Daftar aksi yang dilakukan ketika
|
Langkah 2: Buat StorageClass
Buat StorageClass untuk menentukan templat penyimpanan guna membuat volume persisten secara dinamis berdasarkan sistem file NAS yang sudah ada. Parameter allowVolumeExpansion harus diatur ke true untuk menyediakan garis dasar kapasitas yang jelas bagi volume persisten (PV). Kebijakan auto-scaling mengandalkan garis dasar ini untuk menghitung penggunaan.
cat << EOF | kubectl apply -f -
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: alibabacloud-cnfs-nas # Nama StorageClass. Akan dirujuk di PVC nanti.
mountOptions:
- nolock,tcp,noresvport
- vers=3
parameters:
volumeAs: subpath
# Format bidang server adalah <nas-server-address>:/<path>.
server: "0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/k8s"
archiveOnDelete: "true"
provisioner: nasplugin.csi.alibabacloud.com
reclaimPolicy: Retain
# Harus diatur ke true untuk mengaktifkan ekspansi volume. Ini adalah prasyarat untuk fitur auto-scaling.
allowVolumeExpansion: true
EOFUntuk informasi selengkapnya tentang parameter, lihat Manage NAS file systems with CNFS.
Langkah 3: Terapkan aplikasi dan PVC terkaitnya
Setelah membuat kebijakan, Anda harus menerapkan aplikasi dengan label yang sesuai agar kebijakan tersebut terhubung dengan PVC yang relevan.
Gunakan templat YAML berikut untuk membuat PVC dan deployment. Pastikan labels (app: nginx) untuk kedua objek tersebut persis sama dengan konfigurasi pvcSelector.matchLabels dalam kebijakan.
cat << EOF | kubectl apply -f -
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: cnfs-nas-pvc
labels:
app: nginx # Harus sama dengan konfigurasi pvcSelector.matchLabels dalam kebijakan skala keluar.
spec:
accessModes:
- ReadWriteMany
# Rujuk StorageClass yang dibuat sebelumnya.
storageClassName: alibabacloud-cnfs-nas
resources:
requests:
storage: 20Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: cnfs-nas-deployment
labels:
app: nginx
spec:
selector:
matchLabels:
app: nginx # Harus sama dengan konfigurasi pvcSelector.matchLabels dalam kebijakan skala keluar.
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
volumeMounts:
- mountPath: "/data"
name: cnfs-nas-pvc
volumes:
- name: cnfs-nas-pvc
persistentVolumeClaim:
claimName: cnfs-nas-pvc
EOFLangkah 4: Verifikasi hasil auto-scaling
Setelah kebijakan diterapkan, tulis data analog untuk memicu skala keluar. Kemudian, amati event dan metrik pemantauan terkait untuk memverifikasi bahwa kebijakan tersebut efektif.
Lihat semua pod di namespace default.
kubectl get pods -l app=nginxExpected output:
NAME READY STATUS RESTARTS AGE cnfs-nas-deployment-56dbcc7fb7-wh79z 1/1 Running 0 20mMasuk ke pod aplikasi dan tulis data uji sebesar 20 GiB ke direktori yang dipasang. Hal ini membuat penggunaan penyimpanan melebihi ambang batas 80%.
Operasi penulisan mungkin memakan waktu lama, tergantung pada faktor seperti throughput jaringan dan performa penyimpanan backend.
kubectl exec -it <POD_NAME> -- dd if=/dev/zero of=/data/testfile bs=1G count=20Lihat event yang memicu skala keluar.
kubectl get events | grep cnfs-nas-pvcSetelah skala keluar dipicu, sistem menghasilkan event terkait. Output yang diharapkan harus mencakup event seperti
StartExpanddanVolumeResizeSuccessful. Event-event ini menunjukkan bahwa skala keluar berhasil dipicu dan diselesaikan, serta kapasitas diperluas dari 20 GiB menjadi 40 GiB.12s Warning StartExpand persistentvolumeclaim/cnfs-nas-pvc Start to expand of pvc cnfs-nas-pvc from 20Gi to 40Gi, usedCapacityPercentage:99%, freeSize:204MB. 12s Normal ExternalExpanding persistentvolumeclaim/cnfs-nas-pvc waiting for an external controller to expand this PVC 12s Normal Resizing persistentvolumeclaim/cnfs-nas-pvc External resizer is resizing volume nas-462db2b2-717d-44fe-b0b6-fb4db03a**** 12s Normal VolumeResizeSuccessful persistentvolumeclaim/cnfs-nas-pvc Resize volume succeededAnda juga dapat menjalankan
kubectl get pvcuntuk memeriksa apakah kapasitas PVC telah diperbarui.Lihat informasi penggunaan volume persisten di dasbor pemantauan CSI NAS.
Anda harus mengaktifkan Alibaba Cloud Prometheus Monitoring.
Pada halaman Prometheus Monitoring, klik tab Storage Monitoring, lalu klik tab CSI NAS.
Di dasbor CSI NAS, pilih Namespace dan PVC Name tempat volume persisten NAS berada. Lalu, Anda dapat melihat kapasitas saat ini dari volume persisten NAS di area Total Capacity.
Dalam contoh ini, atur Namespace ke default dan PVC ke cnfs-nas-pvc.

Gambar di atas menunjukkan bahwa skala keluar dipicu pada pukul 10:23:30, dan kapasitas setelah skala keluar adalah 100 GiB.
Rekomendasi untuk lingkungan produksi
Untuk memanfaatkan fitur auto-scaling volume persisten NAS secara optimal di lingkungan produksi, ikuti praktik terbaik berikut.
Dimensi | Deskripsi |
Optimasi biaya |
|
Kebijakan dan keandalan |
|
Pertimbangan performa | Seimbangkan kapasitas dan performa: Auto-scaling menyelesaikan masalah kapasitas, bukan bottleneck performa. Jika aplikasi melambat karena operasi input/output per detik (IOPS) atau banyak operasi baca/tulis file kecil, pertimbangkan memilih tipe NAS dengan performa lebih tinggi. |