Gunakan volume dinamis untuk menyediakan penyimpanan CPFS for Intelligent Computing LINGJUN (LINGJUN) sesuai permintaan tanpa perlu mengelola PV secara manual. Beberapa aplikasi dapat membaca dan menulis secara paralel, sehingga cocok untuk beban kerja pelatihan AI dan analitik data besar yang perlu berbagi kode, file konfigurasi, serta hasil komputasi.
Batasan
Pelanggaran terhadap batasan berikut dapat menyebabkan kegagalan pemasangan atau kondisi kluster yang tidak dapat dipulihkan.
Wajib berada dalam hpn-zone yang sama untuk pemasangan VSC: Node tempat Pod berjalan harus berada dalam hpn-zone yang sama dengan sistem file CPFS for LINGJUN.
Inisialisasi node: Node LINGJUN harus dikaitkan dengan sistem file CPFS for LINGJUN saat inisialisasi. Mengabaikan langkah ini menyebabkan kegagalan pemasangan CSI.
Satu sistem file per Pod: Jangan memasang beberapa volume dari sistem file CPFS for LINGJUN yang sama dalam satu Pod (misalnya, beberapa PV dengan
bmcpfsIdyang sama). Protokol native tidak mendukung pemasangan sistem file yang sama berkali-kali dalam satu Pod, bahkan ke subdirektori yang berbeda sekalipun.Kosongkan node sebelum mematikannya: Kosongkan semua Pod dari node LINGJUN yang bermasalah sebelum mematikannya. Mengabaikan langkah ini menyisakan sumber daya Pod yang tidak dapat dipulihkan dan metadata kluster yang tidak konsisten.
Prasyarat
Pastikan Anda telah memenuhi hal-hal berikut:
Versi kluster 1.26 atau lebih baru (panduan peningkatan).
Node menjalankan Alibaba Cloud Linux 3.
Add-on penyimpanan berikut pada versi minimumnya. Instal atau tingkatkan melalui halaman Add-ons.
Komponen
Versi minimum
CSI add-on (csi-plugin dan csi-provisioner)
v1.33.1
0.1.2
bmcpfs-csi add-on (bmcpfs-csi-controller pada lapisan kontrol yang dikelola ACK dan bmcpfs-csi-node yang diterapkan sebagai DaemonSet pada node kluster)
1.35.1
Konfigurasikan sumber daya cnfs-nas-daemon
cnfs-nas-daemon mengelola proses Elastic File Client (EFC) dan secara langsung memengaruhi kinerja penyimpanan. Konfigurasikan sumber dayanya melalui halaman Add-ons:
CPU: 0,5 core per 1 Gb/s bandwidth, ditambah 1 core untuk manajemen metadata. Contoh: NIC 100 Gb/s →
100 × 0,5 + 1 = 51core.Memori: 15% dari total memori node. CPFS for LINGJUN menggunakan FUSE, sehingga caching data dan metadata file keduanya mengonsumsi memori.
Sesuaikan batas sumber daya berdasarkan beban kerja aktual.
cnfs-nas-daemon menggunakan strategi pembaruan OnDelete. Setelah mengubah pengaturan di halaman Add-ons, hapus secara manual Pod cnfs-nas-daemon di setiap node agar perubahan diterapkan. Lakukan hal ini pada jam sepi.
Node tanpa dukungan hot upgrade: Menyebabkan gangguan perangkat keras. Pod aplikasi gagal dan harus dihapus secara manual, lalu mulai ulang dan pulih secara otomatis.
Node dengan dukungan hot upgrade: Pod pulih secara otomatis. Hot upgrade memerlukan: kernel 5.10.134-18+, bmcpfs-csi-controller dan bmcpfs-csi-plugin versi 1.35.1+, serta cnfs-nas-daemon versi 0.1.9-compatible.1+.
Langkah 1: Buat sistem file CPFS
Buat sistem file CPFS for LINGJUN dan catat ID sistem filenya.
(Opsional) Untuk memasang pada node non-LINGJUN, buat titik pemasangan VPC dalam VPC yang sama dengan node kluster Anda. Catat nama domain titik pemasangan tersebut (format:
cpfs-*-vpc-*.<Region>.cpfs.aliyuncs.com).Jika semua Pod berjalan pada node LINGJUN, pemasangan VSC (Virtual Storage Controller) berlaku secara default. Lewati langkah ini.
Tinjau batasan CPFS for LINGJUN sebelum melanjutkan.
Langkah 2: Buat StorageClass
StorageClass menentukan parameter provisioning seperti ID sistem file dan kebijakan reclaim.
Buat
sc.yaml:Parameter
Wajib
Deskripsi
bmcpfsIdYa
ID sistem file CPFS for LINGJUN. Format:
bmcpfs-xxxxxxxxxataucpfs-xxxxxxxxx.pathTidak
Subdirektori dalam sistem file. Volume dipasang di
{path}/{volumeName}/. Default:/{volumeName}/.allowVolumeExpansionTidak
Parameter cadangan. Versi saat ini tidak mendukung ekspansi dinamis.
reclaimPolicyTidak
Delete(default): menghapus fileset backend saat PVC dihapus.Retain: menyimpan fileset; memerlukan pembersihan manual. GunakanRetaindi lingkungan produksi.apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-bmcpfs-test parameters: bmcpfsId: bmcpfs-xxxxxx vpcMountTarget: cpfs-xxxxx-vpc-xxxxx.cn-hangzhou.cpfs.aliyuncs.com provisioner: bmcpfsplugin.csi.alibabacloud.com reclaimPolicy: Delete volumeBindingMode: Immediate allowVolumeExpansion: trueTerapkan StorageClass:
kubectl apply -f sc.yamlOutput yang diharapkan:
storageclass.storage.k8s.io/alicloud-bmcpfs-test created
Langkah 3: Buat PVC
PVC mereferensikan StorageClass untuk meminta penyimpanan yang disediakan secara dinamis.
Buat
pvc.yaml:Parameter
Deskripsi
accessModesReadWriteManysaja. Memungkinkan akses multi-Pod secara bersamaan.storageKapasitas penyimpanan yang diminta. Mendukung satuan seperti Gi dan Ti.
volumeModeHanya
Filesystemyang didukung.storageClassNameNama StorageClass. Memicu pembuatan volume dinamis.
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: bmcpfs-vsc namespace: default spec: accessModes: - ReadWriteMany # Mendukung baca-tulis bersamaan di banyak Pod resources: requests: storage: 10Ti # Mendukung kapasitas besar (tingkat Ti) volumeMode: Filesystem # Hanya Filesystem yang didukung storageClassName: alicloud-bmcpfs-test # Harus sesuai dengan StorageClass yang dibuat di Langkah 2Terapkan PVC:
kubectl apply -f pvc.yamlVerifikasi bahwa PVC telah terikat:
kubectl get pvc bmcpfs-vsc -n defaultOutput yang diharapkan:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE bmcpfs-vsc Bound pvc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx 10Ti RWX alicloud-bmcpfs-test 30sSaat
STATUSbernilaiBound, PV dibuat secara otomatis. Konfirmasi provisioning:kubectl describe pvc bmcpfs-vsc -n defaultPeriksa
Eventsuntuk pesanProvisioning succeeded.
Langkah 4: Terapkan beban kerja dan pasang PVC
Penyebaran berikut menjalankan tiga replika yang berbagi satu volume CPFS for LINGJUN.
Buat
deploy.yaml:apiVersion: apps/v1 kind: Deployment metadata: name: cpfs-shared-example spec: replicas: 3 # Tiga replika memverifikasi bahwa penyimpanan bersama berfungsi di banyak Pod selector: matchLabels: app: cpfs-shared-app template: metadata: labels: app: cpfs-shared-app spec: tolerations: - key: node-role.alibabacloud.com/lingjun operator: Exists effect: NoSchedule # Opsional: untuk mematok semua Pod ke node tertentu, hapus komentar dan atur nama node # nodeName: cn-hangzhou.10.XX.XX.226 containers: - name: app-container image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 volumeMounts: - name: pvc-cpfs mountPath: /data # Volume bersama dipasang di /data di dalam kontainer lifecycle: postStart: exec: command: - /bin/sh - -c - > echo "Data written by $(hostname)" > /data/$(hostname).txt && echo "Deployment is running, check shared data in /data." && sleep 3600 volumes: - name: pvc-cpfs persistentVolumeClaim: claimName: bmcpfs-vsc # Merujuk ke PVC yang dibuat di Langkah 3Terapkan Penyebaran:
kubectl apply -f deploy.yamlOutput yang diharapkan:
deployment.apps/cpfs-shared-example created
Bersihkan sumber daya
Hapus sumber daya dalam urutan berikut untuk menghindari biaya tak terduga dan menjaga keamanan data.
Hapus beban kerja — Hentikan semua aplikasi yang menggunakan PVC. Hal ini melepas pemasangan volume.
kubectl delete deployment <your-deployment-name>Hapus PVC — Hasilnya bergantung pada
reclaimPolicyStorageClass:Retain(disarankan): Fileset dan data CPFS for LINGJUN tetap utuh. Lanjutkan ke Langkah 3 untuk menghapus PV.Delete: Menghapus permanen PV yang terikat beserta fileset backend-nya. Tindakan ini tidak dapat dikembalikan.
kubectl delete pvc <your-pvc-name>Hapus PV (hanya jika
reclaimPolicybernilaiRetain) — Setelah penghapusan PVC, PV berstatusReleased. Hapus PV tersebut untuk menghapus sumber daya Kubernetes. Data backend tidak terpengaruh.kubectl delete pv <your-pv-name>(Opsional) Hapus StorageClass — Hapus jika tidak lagi diperlukan. Volume yang sudah ada tidak terpengaruh.
kubectl delete sc <your-sc-name>Hapus sistem file CPFS for LINGJUN — Menghapus permanen seluruh data, termasuk data yang dipertahankan oleh kebijakan
Retain. Pastikan tidak ada dependensi tersisa, lalu hapus sistem file.
Pemecahan Masalah
PVC tetap dalam status Pending
PVC yang terjebak dalam status Pending berarti provisioning gagal. Event PVC biasanya mengidentifikasi penyebabnya.
kubectl describe pvc <your-pvc-name> -n <your-namespace>Periksa Events untuk peringatan. Penyebab umum:
StorageClass not found:storageClassNamesalah atau StorageClass tidak ada.provisioning failedataufailed to create fileset: Masalah penyimpanan backend. Lanjutkan ke bawah.
Jika event menunjukkan masalah konfigurasi, periksa StorageClass dan verifikasi pendaftaran driver CSI:
# Periksa konfigurasi StorageClass
kubectl get storageclass <your-sc-name> -o yaml
# Verifikasi driver CSI telah terdaftar
kubectl get csidriver bmcpfsplugin.csi.alibabacloud.comPastikan bahwa:
provisionersesuai denganbmcpfsplugin.csi.alibabacloud.com.bmcpfsIdbenar dan sistem file tersebut ada.Jika
get csidrivertidak menghasilkan output, driver belum terinstal. Instal bmcpfs-csi-controller, bmcpfs-csi-node, dan cnfs-nas-daemon dari halaman Add-ons.
Pod tetap dalam status ContainerCreating atau MountVolume.Setup failed
Pod telah mencapai node tetapi pemasangan volume gagal. Ikuti langkah-langkah berikut untuk mengidentifikasi penyebabnya.
Periksa event Pod:
kubectl describe pod <pod-name> -n <your-namespace>Periksa
Eventsuntuk pesanWarningsepertiFailedMountatauMountVolume.Setup failed.Pastikan PVC telah terikat.
kubectl get pvc <your-pvc-name>STATUSharus bernilaiBound. Jika berstatusPending, lihat PVC tetap dalam status Pending.Jika sudah terikat, periksa log plugin CSI di sisi node:
kubectl get pods -n kube-system -l app.kubernetes.io/name=bmcpfs-csi-driver \ --field-selector spec.nodeName=<nodeName> \ -o name | xargs kubectl logs -n kube-system -c csi-pluginLog ini menampilkan error konektivitas jaringan, izin titik pemasangan, dan error I/O.