Disk Edge Node Service (ENS) menyediakan penyimpanan blok untuk node ENS di kluster ACK Edge. Dengan menggunakan Container Storage Interface (CSI) driver, Anda dapat memasang volume disk ENS melalui dua pendekatan: provisioning dinamis, di mana kluster secara otomatis membuat disk saat PersistentVolumeClaim (PVC) dibuat; dan provisioning statis, di mana Anda secara manual mengikat disk yang sudah ada ke PersistentVolume (PV).
Prasyarat
Sebelum memulai, pastikan Anda telah:
-
Membuat kluster ACK Edge. Lihat Buat kluster ACK Edge.
-
Membuat dan menambahkan node tepi ke kluster. Lihat Buat instans dan Tambahkan node tepi.
-
Menginstal komponen
csi-ens-plugindancsi-ens-provisioner. Lihat Kelola komponen. -
Menghubungkan klien kubectl ke kluster. Lihat Dapatkan file kubeconfig kluster dan gunakan kubectl untuk terhubung ke kluster.
-
(Hanya penyediaan statis) Disk ENS bayar sesuai penggunaan yang telah dibuat, dengan ID disk-nya telah dicatat.
Pertimbangan
Batasan ketat:
-
Disk ENS tidak dapat dibagikan. Satu disk hanya dapat dipasang ke satu Pod dalam satu waktu.
-
Disk ENS hanya dapat dipasang ke node ENS yang berada di wilayah yang sama dengan disk tersebut.
-
Kebijakan reclaim yang didukung hanyalah
Retain. Saat Anda menghapus PVC, PV dan data disk tetap dipertahankan dan harus dihapus secara manual di Konsol Edge Node Service. -
Saat Pod dibuat ulang, sistem memasang kembali disk aslinya. Jika Pod tidak dapat dijadwalkan ke zona asalnya, statusnya tetap
Pending. -
Provisioning dinamis hanya mendukung disk dengan model pay-as-you-go. Untuk detail penagihan, lihat Ikhtisar penagihan.Untuk informasi lebih lanjut tentang penagihan, lihat Penagihan penyimpanan blok. Untuk detail harga, lihat halaman produk ECS.
-
Ukuran disk yang Anda tentukan harus berada dalam rentang kapasitas untuk tipe disk tersebut. Lihat Tipe disk.
Cara kerja
Provisioning dinamis:
-
Anda membuat StorageClass dengan provisioner CSI ENS dan PVC yang mereferensinya.
-
Saat Pod dijadwalkan, driver CSI membuat disk ENS di zona tempat node berada.
-
Driver CSI menyediakan PV dan mengikatnya ke PVC.
-
Disk disambungkan ke node dan dipasang ke dalam Pod.
Provisioning statis:
-
Anda membuat PV yang mereferensi ID disk ENS yang sudah ada.
-
Anda membuat PVC dengan pemilih label yang sesuai dengan PV tersebut.
-
Kubernetes mengikat PVC ke PV.
-
Anda menerapkan workload yang mereferensi PVC tersebut, dan disk dipasang ke dalam Pod.
Gunakan provisioning dinamis
Provisioning dinamis mengotomatiskan pembuatan disk dan pengikatan PV. Gunakan StorageClass untuk menyediakan disk ENS sesuai permintaan.
Langkah 1: Buat StorageClass
CSI ENS mendukung dua mode pengikatan volume. Pilih salah satu berdasarkan penerapan Anda:
| Mode pengikatan | Perilaku | Gunakan saat |
|---|---|---|
WaitForFirstConsumer (direkomendasikan) |
Menunda pembuatan disk hingga Pod dijadwalkan; membuat disk di zona Pod tersebut | Kluster Anda mencakup beberapa wilayah |
Immediate |
Membuat disk segera saat PVC dibuat | Kluster Anda berada di satu wilayah dan Anda menentukan regionId |
Opsi 1: WaitForFirstConsumer (direkomendasikan)
-
Buat file bernama
storage-class-topology.yamldengan konten berikut:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-ens-disk-available provisioner: ensplugin.csi.alibabacloud.com parameters: type: available fsType: ext4 volumeBindingMode: WaitForFirstConsumer reclaimPolicy: Retain allowVolumeExpansion: false -
Terapkan StorageClass:
kubectl apply -f storage-class-topology.yaml -
Verifikasi StorageClass telah dibuat:
kubectl get storageclass alicloud-ens-disk-available
Opsi 2: Immediate
-
Buat file bernama
storage-class-csi.yamldengan konten berikut:apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-ens-disk-available provisioner: ensplugin.csi.alibabacloud.com parameters: type: available regionId: <your-region-id> reclaimPolicy: Retain allowVolumeExpansion: false volumeBindingMode: Immediate -
Terapkan StorageClass:
kubectl apply -f storage-class-csi.yaml -
Verifikasi StorageClass telah dibuat:
kubectl get storageclass alicloud-ens-disk-available
Parameter StorageClass:
| Parameter | Nilai | Bawaan | Deskripsi |
|---|---|---|---|
provisioner |
ensplugin.csi.alibabacloud.com |
— | Identifikasi driver CSI ENS. Harus diatur ke nilai ini. |
type |
available |
— | Tipe disk yang akan disediakan. |
fsType |
ext4 |
ext4 |
Tipe sistem file yang dibuat pada disk. |
regionId |
ID wilayah ENS yang valid | — | Opsional. Wilayah tempat disk dibuat secara otomatis. |
reclaimPolicy |
Retain |
Retain |
Kebijakan reclaim disk. Hanya Retain yang didukung. |
volumeBindingMode |
WaitForFirstConsumer, Immediate |
Immediate |
Mengontrol kapan pembuatan disk dan pengikatan PV terjadi. |
allowVolumeExpansion |
false |
false |
Ekspansi volume tidak didukung. |
Langkah 2: Buat PVC
-
Buat file bernama
pvc-dynamic.yamldengan konten berikut:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: disk-pvc spec: accessModes: - ReadWriteOnce volumeMode: Filesystem resources: requests: storage: 25Gi storageClassName: alicloud-ens-disk-available -
Terapkan PVC:
kubectl create -f pvc-dynamic.yaml -
Verifikasi status PVC:
kubectl get pvc disk-pvcJika Anda menggunakan
WaitForFirstConsumer, status PVC tetapPendinghingga Pod yang mereferensinya dijadwalkan. Ini merupakan perilaku yang diharapkan.
Langkah 3: Terapkan workload
-
Buat file bernama
pvc-dynamic-workload.yamldengan konten berikut:apiVersion: apps/v1 kind: StatefulSet metadata: name: nginx-dynamic spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 name: web volumeMounts: - name: pvc-disk mountPath: /tmp volumes: - name: pvc-disk persistentVolumeClaim: claimName: disk-pvcParameter Deskripsi mountPathJalur di dalam kontainer tempat disk dipasang. claimNameNama PVC yang akan dipasang. Harus sesuai dengan PVC yang dibuat pada langkah sebelumnya. -
Terapkan StatefulSet:
kubectl create -f pvc-dynamic-workload.yaml -
Verifikasi Pod sedang berjalan dan PVC telah terikat:
kubectl get pods -l app=nginx kubectl get pvc disk-pvcStatus PVC berubah menjadi
Boundsetelah Pod dijadwalkan dan disk disediakan. Penjadwalan Pod mungkin memerlukan beberapa menit.
Gunakan provisioning statis
Provisioning statis memungkinkan Anda memasang disk ENS yang sudah ada ke dalam workload Anda. Gunakan pendekatan ini jika Anda telah membuat dan mengonfigurasi disk sebelumnya.
Langkah 1: Buat PV
-
Buat file bernama
pv-static.yamldengan konten berikut:apiVersion: v1 kind: PersistentVolume metadata: name: csi-pv labels: alicloud-pvname: static-disk-pv spec: capacity: storage: 25Gi accessModes: - ReadWriteOnce persistentVolumeReclaimPolicy: Retain csi: driver: ensplugin.csi.alibabacloud.com volumeHandle: "<your-disk-id>" # Ganti dengan ID disk ENS Anda nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: topology.ensplugin.csi.alibabacloud.com/region operator: In values: - "<your-node-region-id>" # Jalankan: kubectl get node <node-name> --show-labelsParameter Deskripsi volumeHandleID disk dari disk ENS yang sudah ada. Temukan nilai ini di Konsol Edge Node Service. nodeAffinityMembatasi PV hanya untuk node di wilayah tertentu. Atur ke wilayah disk ENS tersebut. topology.ensplugin.csi.alibabacloud.com/regionID wilayah node ENS. Jalankan kubectl get node <node-name> --show-labelsuntuk menemukan nilai ini. -
Terapkan PV:
kubectl create -f pv-static.yaml -
Verifikasi PV telah dibuat:
kubectl get pv csi-pv
Langkah 2: Buat PVC
-
Buat file bernama
pvc-static.yamldengan konten berikut:apiVersion: v1 kind: PersistentVolumeClaim metadata: name: csi-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 25Gi storageClassName: "" selector: matchLabels: alicloud-pvname: static-disk-pvstorageClassName: ""memberi tahu Kubernetes untuk mengikat ke PV yang dibuat secara manual, bukan menggunakan provisioning dinamis.selector.matchLabelsharus sesuai dengan label pada PV. Kapasitas yang diminta (25Gi) tidak boleh melebihi kapasitas PV. -
Terapkan PVC:
kubectl create -f pvc-static.yaml -
Verifikasi PVC telah terikat ke PV:
kubectl get pvc csi-pvcStatus PVC seharusnya menunjukkan
Bound.
Langkah 3: Terapkan workload
-
Buat file bernama
web-static.yamldengan konten berikut:apiVersion: apps/v1 kind: StatefulSet metadata: name: nginx-static spec: selector: matchLabels: app: nginx serviceName: "nginx" template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx ports: - containerPort: 80 name: web volumeMounts: - name: pvc-disk mountPath: /tmp volumes: - name: pvc-disk persistentVolumeClaim: claimName: csi-pvc -
Terapkan StatefulSet:
kubectl apply -f web-static.yaml -
Verifikasi Pod sedang berjalan:
kubectl get pods -l app=nginx kubectl get pvc csi-pvcSaat Pod mencapai status
Runningdan PVC menunjukkan statusBound, disk ENS berhasil dipasang.
Langkah selanjutnya
-
Kelola komponen — Perbarui atau uninstal komponen
csi-ens-plugindancsi-ens-provisioner. -
Tipe disk — Tinjau tipe disk ENS yang tersedia dan rentang kapasitasnya.
-
Ikhtisar penagihan — Pahami penagihan disk ENS untuk volume yang disediakan secara dinamis.