Disk Edge Node Service (ENS) digunakan pada node ENS dalam klaster ACK Edge. Anda dapat membuat volume disk ENS yang di-provision secara statis dan dinamis menggunakan Plugin Antarmuka Penyimpanan Kontainer (CSI) di klaster ACK Edge. Topik ini menjelaskan cara memasang volume disk ENS yang di-provision secara statis dan dinamis yang dibuat menggunakan plugin CSI.
Prasyarat
Sebuah klaster ACK Edge telah dibuat. Untuk informasi lebih lanjut, lihat Buat klaster ACK Edge.
Sebuah node edge telah dibuat. Untuk informasi lebih lanjut, lihat Buat sebuah instance. Node edge ditambahkan ke klaster ACK Edge. Untuk informasi lebih lanjut, lihat Tambahkan node edge.
Komponen csi-ens-plugin dan csi-ens-provisioner telah diinstal. Untuk informasi lebih lanjut, lihat Kelola komponen.
Klien kubectl terhubung ke klaster. Untuk informasi lebih lanjut, lihat Dapatkan file kubeconfig dari klaster dan gunakan kubectl untuk terhubung ke klaster.
Jika Anda menggunakan volume disk yang di-provision secara statis, pastikan bahwa Anda telah membuat disk ENS berbayar sesuai pemakaian dan mencatat ID disk sebagai
d-wz92s6d95go6ki9x****.
Catatan penggunaan
Selama penyebaran aplikasi, disarankan untuk menggunakan StorageClass agar Persistent Volume (PV) dibuat secara otomatis untuk membeli disk. Jika Anda telah membeli disk, Anda dapat menggunakan volume disk yang di-provision secara statis.
Saat membeli disk, ukuran disk yang ditentukan tidak boleh melebihi rentang kapasitas yang sesuai untuk disk individu. Untuk informasi lebih lanjut, lihat Volume disk.
Saat sistem merecreate pod, disk asli yang dipasang ke pod akan dimount ulang. Jika sistem gagal menjadwalkan pod ke zona aslinya selama rekreasi, pod tetap dalam status Pending.
Provisioning dinamis hanya mendukung disk berbayar sesuai pemakaian. Untuk informasi lebih lanjut tentang item yang dapat ditagih dari disk, lihat Penagihan perangkat penyimpanan blok. Untuk informasi lebih lanjut tentang harga disk, kunjungi halaman produk Elastic Compute Service.
Disk ENS yang disediakan oleh tim penyimpanan Alibaba Cloud tidak dapat dibagi. Sebuah disk hanya dapat dipasang ke satu pod.
Di klaster ACK Edge, disk ENS hanya dapat dipasang ke node ENS yang berada di wilayah yang sama dengan disk ENS tersebut.
Anda tidak dapat mengambil atau menghapus disk ENS. Operasi terkait dapat dilakukan di .
Gunakan volume disk ENS yang di-provision secara dinamis
Step 1: Create a StorageClass
Untuk klaster di wilayah berbeda, Anda dapat menggunakan salah satu metode berikut untuk membuat StorageClass:
Method 1: Create a StorageClass in WaitForFirstConsumer mode
Mode WaitForFirstConsumer dapat menyelesaikan masalah beberapa wilayah yang tersedia di klaster ACK Edge. Dalam contoh berikut, StorageClass dibuat menggunakan file storage-class-csi-topology.yaml.
Buat file bernama storage-class-topology.yaml dan salin konten berikut ke file tersebut:
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: falseParameter
Deskripsi
name
Nama StorageClass.
provisioner
Tetapkan nilai menjadi
ensplugin.csi.alibabacloud.com. Gunakan plugin provisioner disk ENS untuk membuat StorageClass.type
Tipe disk.
regionId
Opsional. Wilayah tempat disk dibuat secara otomatis.
reclaimPolicy
Kebijakan reclaim disk. Hanya
Retainyang didukung. Saat Anda menghapus persistent volume claim (PVC), PV dan data disk dipertahankan dan harus dihapus secara manual.volumeBindingMode
Mode binding disk. Nilai default:
Immediate. Anda juga dapat menetapkan parameter ini keWaitForFirstConsumer.Immediate: membuat disk saat PVC yang menggunakan StorageClass dibuat. Dengan cara ini, disk dibuat dan PV di-provision sebelum Anda membuat pod yang menggunakan disk.WaitForFirstConsumer: menunda binding dan provisioning PV hingga pod yang menggunakan PVC dibuat. Setelah pod dijadwalkan ke node, disk dibuat di zona tempat node diterapkan dan di-provision sebagai PV.
Jalankan perintah berikut untuk membuat StorageClass:
kubectl apply -f storage-class-topology.yamlLihat StorageClass yang dibuat.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan klaster yang diinginkan dan klik namanya. Di panel kiri, pilih .
Di halaman StorageClasses, Anda dapat melihat StorageClass yang dibuat.
Method 2: Create a StorageClass by creating a disk and then creating a pod
Buat file bernama storage-class-csi.yaml dan salin konten berikut ke file tersebut:
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-ens-disk-available provisioner: ensplugin.csi.alibabacloud.com parameters: type: available regionId: xxx reclaimPolicy: Retain allowVolumeExpansion: false volumeBindingMode: ImmediateJalankan perintah berikut untuk membuat StorageClass:
kubectl apply -f storage-class-csi.yamlLihat StorageClass yang dibuat.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan klaster yang diinginkan dan klik namanya. Di panel kiri, pilih .
Di halaman StorageClasses, Anda dapat melihat StorageClass yang dibuat.
Step 2: Create a PVC
Buat file bernama pvc-ssd.yaml dan salin konten berikut ke file tersebut:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: disk-pvc spec: accessModes: - ReadWriteOnce volumeMode: Filesystem resources: requests: storage: 25Gi storageClassName: alicloud-ens-disk-availableJalankan perintah berikut untuk membuat PVC:
kubectl create -f pvc-ssd.yamlLihat PVC yang dibuat.
Di panel navigasi kiri halaman detail, pilih . Di halaman Persistent Volume Claims, Anda dapat melihat PVC yang dibuat.
Step 3: Create an application
Buat file bernama pvc-dynamic.yaml dan salin konten berikut ke file tersebut:
Gunakan template berikut untuk membuat aplikasi bernama nginx-dynamic dan mount PVC ke aplikasi.
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: /data volumes: - name: pvc-disk persistentVolumeClaim: claimName: disk-pvcParameter
Deskripsi
mountPath
Path tempat disk dimount.
claimName
Nama PVC yang dimount ke aplikasi.
Jalankan perintah berikut untuk membuat aplikasi dan mount PVC ke aplikasi:
kubectl create -f pvc-dynamic.yamlLihat aplikasi yang dibuat.
Di panel navigasi kiri halaman detail, pilih . Di halaman StatefulSets, Anda dapat menemukan aplikasi yang dibuat.
Gunakan volume disk ENS yang di-provision secara statis
Step 1: Create a PV
Buat file bernama pv-static.yaml dan salin konten berikut ke file tersebut:
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>" nodeAffinity: required: nodeSelectorTerms: - matchExpressions: - key: topology.ensplugin.csi.alibabacloud.com/region operator: In values: - "<your-node-region-id>" # ID wilayah node ENS. Untuk melihat ID wilayah node ENS, lihat parameter topology.ensplugin.csi.alibabacloud.com/region di label node ENS.Parameter
Deskripsi
name
Nama PV.
labels
Label yang ingin Anda tambahkan ke PV.
storage
Penyimpanan yang tersedia dari cloud disk.
accessModes
Mode akses PV.
persistentVolumeReclaimPolicy
Kebijakan reclaim PV.
driver
Tipe driver. Nilai
ensplugin.csi.alibabacloud.commenentukan bahwa disk ENS di plugin CSI digunakan.volumeHandle
ID cloud disk yang terkait dengan PV.
nodeAffinity
Informasi tentang zona tempat PV dan PVC berada.
Anda dapat mengonfigurasi parameter ini untuk menentukan zona tempat pod yang menggunakan PV dan PVC dijadwalkan.
Jalankan perintah berikut untuk membuat PV:
kubectl create -f pv-static.yamlLihat PV yang Anda buat.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan klaster yang diinginkan dan klik namanya. Di panel kiri, pilih .
Di halaman Persistent Volumes, Anda dapat melihat PV yang dibuat.
Step 2: Create a PVC
Buat file bernama pvc-static.yaml dan salin konten berikut ke file tersebut:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: csi-pvc spec: accessModes: - ReadWriteOnce resources: requests: storage: 25Gi selector: matchLabels: alicloud-pvname: static-disk-pvParameter
Deskripsi
name
Nama PVC.
accessModes
Mode akses PVC.
storage
Kapasitas yang diklaim oleh PVC. Kapasitas yang diklaim tidak boleh melebihi kapasitas PV yang terikat pada PVC.
matchLabels
Label yang digunakan untuk memilih dan mengikat PV ke PVC. Label harus sama dengan PV yang akan diikat ke PVC.
Jalankan perintah berikut untuk membuat PVC:
kubectl create -f pvc-static.yamlLihat PVC yang dibuat.
Di panel navigasi kiri halaman detail, pilih . Di halaman Persistent Volume Claims, Anda dapat melihat PVC yang dibuat.
Step 3: Create an application
Dalam contoh ini, sebuah aplikasi web dibuat dan dipasang dengan PVC yang Anda buat.
Buat file bernama web.yaml dan salin konten berikut ke file tersebut:
apiVersion: apps/v1 kind: StatefulSet metadata: name: web 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: /data volumes: - name: pvc-disk persistentVolumeClaim: claimName: csi-pvcParameter
Deskripsi
mountPath
Path tempat disk dimount.
claimName
Nama PVC yang dimount ke aplikasi.
Jalankan perintah berikut untuk membuat aplikasi yang dimount dengan volume disk ENS yang di-provision secara statis menggunakan PVC:
kubectl apply -f web.yamlDi panel navigasi kiri halaman detail, pilih .
Di halaman StatefulSets, Anda dapat melihat aplikasi web dan aplikasi dapat dimulai sesuai harapan. Ini menunjukkan bahwa disk ENS telah dimount.