Topik ini menjelaskan cara memasang volume Cloud Parallel File System (CPFS) General-purpose Edition yang disediakan secara statis ke workload dalam kluster ACK. CPFS dirancang untuk workload komputasi kinerja tinggi (HPC), seperti pelatihan AI, kendaraan otonom, komputasi genetika, dan rendering video.
Cara kerja
Alur kerja utama untuk memasang volume penyimpanan statis CPFS General-purpose dalam kluster ACK adalah sebagai berikut.
-
Buat PV: "Daftarkan" sistem file CPFS General-purpose yang sudah ada di kluster dengan mendeklarasikan alamat mount, kapasitas, mode akses, dan parameter lainnya.
-
Buat PVC: Aplikasi "meminta" sumber daya penyimpanan terdaftar melalui PVC. PVC secara otomatis melakukan bind ke PV yang memenuhi kondisi yang ditentukan.
-
Pasang di aplikasi: Pasang PVC yang telah terikat ke Pod aplikasi sebagai direktori persisten di dalam kontainer.
Prasyarat
-
Periksa dan upgrade komponen CSI: Pastikan versi komponen csi-plugin dan csi-provisioner tidak lebih lama dari v1.22.11-abbb810e-aliyun.
Untuk upgrade, lihat Upgrade komponen CSI.
-
Komponen penyimpanan telah dikonfigurasi untuk mendukung pemasangan CPFS.
-
Sistem file CPFS General-purpose, layanan protokol, dan alamat mount yang dapat diakses oleh kluster ACK telah disiapkan.
Jika belum dibuat, Buat sistem file CPFS General-purpose Edition di wilayah tempat kluster berada, gunakan VPC dan vSwitch yang sesuai dengan kluster untuk Buat layanan protokol, dan hasilkan titik mount.
-
Sistem file: Harus berada di wilayah yang didukung CPFS General-purpose, berlokasi di wilayah yang sama dengan kluster, dan menggunakan versi 2.3.0 atau lebih baru.
Pada halaman File System List di Konsol NAS, klik sistem file CPFS target, lalu konfirmasi nomor versi CPFS pada halaman Basic Information.
-
Layanan protokol: CPFS tidak mendukung pemasangan lintas-VPC. VPC yang digunakan harus sama dengan kluster.
-
Dapatkan alamat mount layanan protokol (terdiri dari nama domain titik mount dan direktori ekspor). Jika direktori ekspor
/ditentukan, alamat mount-nya adalahcpfs-****.<Region ID>.cpfs.aliyuncs.com:/share.Pada halaman Protocol Service, klik Export Directory, lalu salin dan simpan alamat mount pada kolom Mount address.
-
-
Anda telah memahami Batasan CPFS General-purpose.
Langkah 1: Buat PV
Buat PV di kluster untuk "mendaftarkan" sistem file CPFS yang sudah ada.
-
Simpan konten berikut sebagai file cpfs-pv.yaml.
apiVersion: v1 kind: PersistentVolume metadata: name: cpfs-pv labels: # Definisikan label untuk bind PVC selanjutnya alicloud-pvname: cpfs-pv spec: accessModes: # Mode akses - ReadWriteMany capacity: storage: 20Gi # Definisikan kapasitas total PV csi: driver: nasplugin.csi.alibabacloud.com # Tetapkan ke nilai ini volumeAttributes: mountProtocol: cpfs-nfs # Gunakan protokol NFS untuk pemasangan path: "/share" # Direktori mount di alamat mount volumeAs: subpath # Subdirektori server: "cpfs-******-******.cn-shanghai.cpfs.aliyuncs.com" # Nama domain titik mount di alamat mount volumeHandle: cpfs-pv # Pengenal unik volume, harus konsisten dengan metadata.name mountOptions: # Opsi mount NFS - rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport - vers=3Penjelasan parameter utama:
Parameter
Deskripsi
accessModesMode akses untuk PV.
capacity.storageKapasitas penyimpanan volume.
csi.driverTipe driver. Saat menggunakan CPFS General Purpose, nilai ini tetap
nasplugin.csi.alibabacloud.com.csi.volumeAttributes.serverNama domain titik mount di alamat mount direktori ekspor layanan protokol CPFS General Purpose.
csi.volumeAttributes.pathDirektori mount di alamat mount direktori ekspor layanan protokol CPFS General Purpose, misalnya
/share. Anda juga dapat mengaturnya ke subdirektori, misalnya/share/dir.csi.volumeAttributes.mountProtocolcpfs-nfsmenunjukkan penggunaan protokol NFS untuk memasang CPFS.csi.volumeAttributes.volumeAssubpathmenunjukkan pembuatan PV tipe subdirektori.csi.volumeHandleHarus konsisten dengan nama PV.
-
Jalankan perintah berikut untuk membuat PV.
kubectl apply -f cpfs-pv.yaml -
Lihat status PV.
kubectl get pv cpfs-pvOutput yang diharapkan:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE cpfs-pv 20Gi RWX Retain Available 2s
Langkah 2: Buat PVC
Buat PVC untuk "meminta" penggunaan sumber daya penyimpanan yang telah didaftarkan pada langkah sebelumnya.
-
Simpan konten berikut sebagai cpfs-pvc.yaml.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: cpfs-pvc spec: accessModes: - ReadWriteMany # Mode akses resources: requests: storage: 20Gi # Kapasitas penyimpanan yang diminta selector: # matchLabels: alicloud-pvname: cpfs-pv # Bind ke PV yang telah dibuat sebelumnyaParameter PV
Deskripsi
accessModesMode akses yang diminta PVC dari PV.
selectorMenggunakan label pada PV untuk pencocokan dan binding.
resources.requests.storageKapasitas penyimpanan yang dialokasikan ke Pod. Nilainya tidak boleh melebihi kapasitas PV.
-
Buat PV dan PVC.
kubectl apply -f cpfs-pvc.yaml -
Lihat status PVC untuk memastikan bahwa PVC telah berhasil terikat ke PV.
kubectl get pvc cpfs-pvcBerikut contoh output-nya:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE cpfs-pvc Bound cpfs-pv 20Gi RWO <unset> 18m
Langkah 3: Buat aplikasi dan pasang volume
Buat workload aplikasi dan deklarasikan penggunaan PVC yang telah dibuat sebelumnya dalam konfigurasinya.
-
Simpan konten berikut sebagai cpfs-test.yaml.
apiVersion: apps/v1 kind: StatefulSet metadata: name: cpfs-sts spec: selector: matchLabels: app: nginx serviceName: "nginx" replicas: 2 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: - name: cpfs-pvc mountPath: /data volumes: - name: cpfs-pvc persistentVolumeClaim: claimName: cpfs-pvc -
Buat StatefulSet.
kubectl apply -f cpfs-test.yaml -
Lihat status Pod.
kubectl get pods -l app=nginxOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE cpfs-sts-0 1/1 Running 0 58s cpfs-sts-1 1/1 Running 0 50s -
Periksa titik mount di dalam kontainer untuk memastikan CPFS telah berhasil dipasang.
kubectl exec cpfs-sts-0 -- mount | grep /dataOutput yang diharapkan berikut menunjukkan bahwa volume statis CPFS General-purpose telah berhasil dipasang.
cpfs-******-******.cn-shanghai.cpfs.aliyuncs.com:/share on /data type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,noresvport,proto=tcp,port=30000,timeo=600,retrans=2,sec=sys,mountaddr=127.0.1.255,mountvers=3,mountport=30000,mountproto=tcp,local_lock=all,addr=127.0.1.255)
Verifikasi penyimpanan bersama dan penyimpanan persisten
Setelah aplikasi berhasil dideploy, Anda dapat memverifikasi apakah volume penyimpanan berfungsi sesuai harapan.
Penyimpanan bersama
Buat file di satu Pod, lalu lihat di Pod lain untuk memverifikasi penyimpanan data bersama.
-
Lihat informasi Pod untuk mendapatkan nama Pod.
kubectl get pod -l app=nginxOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE cpfs-sts-0 1/1 Running 0 10s cpfs-sts-1 1/1 Running 0 5s -
Buat file di salah satu Pod.
Berikut menggunakan Pod bernama
cpfs-sts-0sebagai contoh:kubectl exec cpfs-sts-0 -- touch /data/test.txt -
Periksa apakah file tersebut ada di Pod lain.
Berikut menggunakan Pod bernama
cpfs-sts-1sebagai contoh.kubectl exec cpfs-sts-1 -- ls /dataOutput yang diharapkan:
test.txtFile yang sebelumnya dibuat terlihat, menunjukkan bahwa data dapat dibagikan di antara beberapa Pod.
Penyimpanan persisten
Rebuild Deployment dan periksa apakah data dalam sistem file masih ada di Pod baru untuk memverifikasi penyimpanan persisten data.
-
Hapus Pod aplikasi untuk memicu rebuild.
kubectl rollout restart sts cpfs-sts -
Lihat Pod dan tunggu hingga Pod baru mulai dan masuk ke status Running.
kubectl get pod -l app=nginxOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE cpfs-sts-0 1/1 Running 0 1s cpfs-sts-1 1/1 Running 0 10s -
Periksa apakah file yang sebelumnya dibuat masih ada di Pod baru.
Berikut menggunakan Pod bernama
cpfs-sts-0sebagai contoh.kubectl exec cpfs-sts-0 -- ls /dataOutput yang diharapkan:
test.txtFile yang sebelumnya ditulis terlihat, menunjukkan bahwa data disimpan secara persisten.
Rekomendasi untuk lingkungan produksi
-
Tuning performa: CPFS cocok untuk skenario throughput tinggi dan IOPS tinggi. Anda dapat menyesuaikan opsi mount NFS di
mountOptionsPV (sepertirsizedanwsize) untuk mengoptimalkan performa dan memenuhi kebutuhan workload tertentu. -
Konsistensi data: Sebagai penyimpanan bersama, CPFS tidak menjamin konsistensi data ketika beberapa Pod menulis secara konkuren ke file yang sama. Untuk menghindari korupsi file, Anda perlu menerapkan kunci terdistribusi di lapisan aplikasi atau menggunakan mode penulisan append-only.
-
Manajemen volume penyimpanan: Pendekatan volume penyimpanan statis memerlukan manajemen PV secara manual. Untuk skenario yang memerlukan pembuatan dan isolasi volume penyimpanan secara otomatis untuk beberapa aplikasi, kami merekomendasikan penggunaan CNFS untuk mengelola volume penyimpanan dinamis CPFS. Untuk informasi lebih lanjut, lihat Manage General-purpose CPFS dynamic volumes.