Anda dapat menentukan kebijakan perluasan otomatis untuk volume File Storage NAS (NAS) yang dikelola oleh Container Network File System (CNFS). Hal ini memungkinkan volume NAS diperluas secara otomatis ketika penggunaan penyimpanan melebihi ambang batas. Topik ini menjelaskan cara menggunakan CNFS untuk memperluas volume NAS secara otomatis.
Prasyarat
Kluster harus dapat menggunakan CNFS untuk mengelola sistem file NAS. Untuk informasi lebih lanjut, lihat Gunakan CNFS untuk Mengelola Sistem File NAS (Disarankan).
Kluster menggunakan Plugin CSI, dan komponen terkait penyimpanan harus memenuhi persyaratan berikut:
Versi csi-plugin dan csi-provisioner adalah 1.20.5-ff6490f-aliyun atau yang lebih baru. Untuk informasi lebih lanjut tentang cara memperbarui csi-plugin dan csi-provisioner, lihat Perbarui csi-plugin dan csi-provisioner.
Default
dnsPolicydari csi-plugin adalahClusterFirst. Jika Anda ingin menggunakan CNFS untuk memperluas volume NAS secara otomatis, Anda harus mengubah default dnsPolicy dariClusterFirstmenjadiClusterFirstWithHostNet.Versi storage-operator adalah 1.18.8.56-2aa33ba-aliyun atau yang lebih baru. Untuk informasi lebih lanjut, lihat storage-operator.
Langkah 1: Konfigurasikan komponen storage-operator dan aktifkan perluasan otomatis
Komponen storage-operator memiliki fitur storage-auto-expander yang bertanggung jawab untuk memperluas sumber daya penyimpanan secara otomatis. Hubungkan ke kluster dan jalankan perintah berikut untuk memodifikasi file ConfigMap dari storage-operator serta mengaktifkan fitur perluasan otomatis:
kubectl patch configmap/storage-operator \
-n kube-system \
--type merge \
-p '{"data":{"storage-auto-expander":"{\"imageRep\":\"acs/storage-auto-expander\",\"imageTag\":\"\",\"install\":\"true\",\"template\":\"/acs/templates/storage-auto-expander/install.yaml\",\"type\":\"deployment\"}"}}'Langkah 2: Konfigurasikan kebijakan perluasan otomatis
Periksa status objek CNFS. Pastikan bahwa objek CNFS berada dalam status Available.
Kueri objek CNFS.
kubectl get cnfsOutput yang Diharapkan:
NAME AGE default-cnfs-nas-837d6ea-20210819155623 14dPeriksa status objek CNFS.
kubectl get cnfs <Objek CNFS yang dikueri pada langkah sebelumnya> -o yaml | grep AvailableOutput yang Diharapkan:
status: Available
Gunakan template YAML berikut untuk membuat kebijakan perluasan otomatis untuk volume NAS.
cat << EOF | kubectl apply -f - apiVersion: storage.alibabacloud.com/v1alpha1 kind: StorageAutoScalerPolicy metadata: name: hybrid-expand-policy spec: pvcSelector: matchLabels: app: nginx # Anda harus menentukan label yang ditambahkan ke persistent volume claim (PVC) dan Deployment tempat volume NAS dipasang. Dalam contoh ini, app: nginx ditentukan. namespaces: - default - nginx conditions: - name: condition1 key: volume-capacity-used-percentage operator: Gt values: - "80" actions: - name: action1 type: volume-expand params: scale: 100% limits: 500Gi EOFParameter
Deskripsi
pvcSelector
Label yang digunakan untuk mencocokkan kebijakan perluasan dengan PVC yang digunakan untuk memasang volume NAS. Dalam contoh ini, nginx digunakan.
namespaces
Namespace dari PVC yang digunakan untuk memasang volume NAS. Jika beberapa namespace ditentukan, operator logis antara namespace adalah OR. Nilai default: default. Dalam contoh ini, default dan nginx ditentukan.
conditions
Kondisi yang memicu tindakan. Operator logis antara beberapa conditions adalah AND. Setiap condition mencakup parameter berikut:
key: jenis metrik.
volume-capacity-used-percentage: menentukan bahwa ambang batas penggunaan penyimpanan dinyatakan dalam persentase.
operator: operator, yang bisa berupa Gt (lebih besar dari), Lt (kurang dari), Eq (sama dengan), atau Ne (tidak sama dengan). Nilai parameter tidak peka huruf besar-kecil.
values: nilai ambang batas.
Dalam contoh, kondisi menentukan bahwa action dipicu ketika penggunaan penyimpanan PVC melebihi 80%.
actions
Tindakan yang dilakukan ketika conditions sebelumnya terpenuhi. Beberapa tindakan diperbolehkan. Setiap tindakan mencakup parameter berikut:
type: jenis tindakan. Hanya volume-expand yang didukung.
scale: ukuran penyimpanan yang ingin Anda tambahkan ke volume. Unit valid: GiB dan persentase (%).
limits: kapasitas maksimum PVC jika action dilakukan.
Jika beberapa actions ditentukan di bagian actions, action pertama yang kondisinya terpenuhi akan dilakukan. actions lainnya dilewati.
Dalam contoh ini, action1 menentukan bahwa jika kondisi terpenuhi, volume NAS diperluas sebesar 100%. Volume NAS dapat diperluas hingga maksimum 500 GiB.
Gunakan template YAML berikut untuk membuat PVC dan Deployment.
PentingKebijakan perluasan otomatis diterapkan pada PVC dan Deployment dengan label tertentu. Dalam contoh ini, pvcSelector.matchLabels diatur ke
app: nginxdalam kebijakan perluasan otomatis. Oleh karena itu, kebijakan ini berlaku untuk PVC dan Deployment yang parameter labels-nya diatur keapp: nginx.cat << EOF | kubectl apply -f - kind: PersistentVolumeClaim apiVersion: v1 metadata: name: cnfs-nas-pvc labels: app: nginx # Anda harus menentukan nilai yang sama dengan parameter pvcSelector.matchLabels dalam template YAML kebijakan perluasan. Dalam contoh ini, app: nginx ditentukan. spec: accessModes: - ReadWriteMany storageClassName: alibabacloud-cnfs-nas resources: requests: storage: 50Gi --- apiVersion: apps/v1 kind: Deployment metadata: name: cnfs-nas-deployment labels: app: nginx spec: selector: matchLabels: app: nginx # Anda harus menentukan nilai yang sama dengan parameter pvcSelector.matchLabels dalam template YAML kebijakan perluasan. Dalam contoh ini, app: nginx ditentukan. template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 volumeMounts: - mountPath: "/data" name: cnfs-nas-pvc volumes: - name: cnfs-nas-pvc persistentVolumeClaim: claimName: cnfs-nas-pvc EOF
Langkah 3: Verifikasi bahwa volume NAS dapat diperluas secara otomatis
Kueri semua pod di namespace default.
kubectl get podOutput yang Diharapkan:
NAME READY STATUS RESTARTS AGE cnfs-nas-deployment-56dbcc7fb7-wh79z 1/1 Running 0 20mMasuk ke pod aplikasi dan tulis 50 GiB data ke direktori tempat volume NAS dipasang.
cd /data dd if=<jalur data> of=<jalur terpasang> kubectl exec -it cnfs-nas-deployment-56dbcc7fb7-wh79z -ti -- dd if=/dev/zero of=/data/test1 bs=1G count=50Periksa peristiwa terkait perluasan volume.
kubectl get eventsOutput berikut menunjukkan bahwa penggunaan penyimpanan volume NAS melebihi 80%, yang memicu perluasan volume. Volume NAS diperluas dari 50 GiB menjadi 100 GiB.
12s Warning StartExpand persistentvolumeclaim/cnfs-nas-pvc Mulai memperluas pvc cnfs-nas-pvc dari 50Gi menjadi 100Gi, usedCapacityPercentage:96%, freeSize:2048MB. 12s Normal ExternalExpanding persistentvolumeclaim/cnfs-nas-pvc menunggu pengontrol eksternal untuk memperluas PVC ini 12s Normal Resizing persistentvolumeclaim/cnfs-nas-pvc Pengubah eksternal sedang memperluas volume nas-462db2b2-717d-44fe-b0b6-fb4db03a**** 12s Normal VolumeResizeSuccessful persistentvolumeclaim/cnfs-nas-pvc Perluasan volume berhasilPeriksa informasi penggunaan volume di dasbor CSI NAS.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang diinginkan dan klik namanya. Di panel kiri, pilih .
Di halaman Prometheus Monitoring, pilih .
Di tab CSI NAS, pilih namespace tempat volume penyimpanan NAS berada dan PVC. Kemudian, Anda dapat melihat kapasitas volume NAS di bagian total kapasitas.
Dalam contoh ini, atur Namespace ke default, dan PVC ke cnfs-nas-pvc.

Grafik di atas menunjukkan bahwa perluasan terjadi pada 10:23:30 dan volume NAS diperluas menjadi 100 GiB.