CPFS for Lingjun menyediakan throughput dan IOPS tinggi. Layanan ini mendukung akselerasi jaringan RDMA end-to-end dan ideal untuk skenario komputasi cerdas seperti AIGC dan kendaraan otonom. ACK memungkinkan Anda memasang sistem file CPFS for Lingjun sebagai volume persisten statis (PV) untuk workload Anda.
CPFS for Lingjun saat ini berada dalam pratinjau undangan. Layanan ini hanya tersedia di wilayah dan zona tertentu. Untuk menggunakannya, hubungi account manager Anda untuk meminta akses.
Function Introduction
Dengan menggunakan add-on CSI, ACK memasang volume persisten statis CPFS for Lingjun ke workload melalui PV dan PVC. Add-on CSI secara otomatis memilih metode pemasangan optimal berdasarkan tipe node tempat pod dijadwalkan:
-
Pemasangan VSC: Hanya didukung pada Node Lingjun. Anda harus mengajukan tiket ke produk CPFS dan produk Lingjun untuk mengaktifkan daftar putih.submit a ticket.
-
Pemasangan VPC: Didukung pada node non-Lingjun. Buat Titik pemasangan VPC untuk mengaktifkan pemasangan. Semua node dalam VPC yang sama dapat memasang dan mengakses sistem file tersebut.
Prerequisites
-
Tinjau Batasan untuk CPFS for Lingjun.
-
Kluster Anda memenuhi kondisi berikut:
-
Versi kluster: 1.26 atau lebih baru. Untuk meningkatkan kluster Anda, lihat Manually upgrade a cluster.
-
Sistem operasi node: Alibaba Cloud Linux 3.
-
Anda telah menginstal komponen penyimpanan berikut pada versi yang diperlukan.
Buka halaman Add-ons untuk memeriksa versi, menginstal, atau meningkatkan komponen.
-
Add-on CSI (csi-plugin dan csi-provisioner): v1.33.1 atau lebih baru. Untuk meningkatkan, lihat Manage CSI add-ons.
-
cnfs-nas-daemon add-on: 0.1.2 atau lebih baru.
-
Add-on bmcpfs-csi: Terdiri dari bmcpfs-csi-controller (komponen control-plane yang dikelola oleh ACK) dan bmcpfs-csi-node (komponen sisi node yang diterapkan sebagai DaemonSet di kluster).
-
-
Important Notes
-
Saat menggunakan pemasangan VSC, node yang menjalankan pod harus berada di hpn-zone yang sama dengan instans sistem file CPFS for Lingjun.
-
Node Lingjun harus dikaitkan dengan sistem file CPFS for Lingjun selama inisialisasi. Jika tidak, pemasangan CSI akan gagal.
-
Sebelum mengambil offline Node Lingjun karena kegagalan, drain semua pod darinya. Melewatkan langkah ini menyebabkan metadata kluster tidak konsisten dan meninggalkan sumber daya pod yang tidak dapat dipulihkan.
-
Anda tidak dapat memasang subdirektori berbeda dari instans CPFS yang sama ke satu pod menggunakan beberapa PV. Karena keterbatasan driver, konfigurasi ini menyebabkan pemasangan pod gagal dan mencegah pod dimulai.
Sebagai gantinya, buat satu PV/PVC untuk instans CPFS. Lalu gunakan konfigurasi
volumeMountsdalam spesifikasi pod Anda dan atur bidangsubPathuntuk memasang subdirektori yang diperlukan.subPathmenggunakan mekanismebind mountringan. Mekanisme ini tidak menambahkan beban kinerja.
Step 1: Create a CPFS File System
-
Buat sistem file CPFS for Lingjun. Lihat Create a CPFS for Lingjun File System. Catat ID sistem file tersebut.
-
(Opsional) Jika Anda ingin memasang pada node non-Lingjun, buat Titik pemasangan VPC create a VPC mount target (dalam VPC yang sama dengan node kluster Anda), dan catat Nama domain titik pemasangan tersebut. Formatnya adalah
cpfs-***-vpc-***.<Region>.cpfs.aliyuncs.com.Jika pod dijadwalkan ke Node Lingjun, pemasangan VSC digunakan secara default. Lewati langkah ini.
Step 2: Create a PV and a PVC
-
Buat PV dan PVC untuk sistem file CPFS yang sudah ada.
-
Modifikasi contoh YAML di bawah ini dan simpan sebagai bmcpfs-pv-pvc.yaml.
apiVersion: v1 kind: PersistentVolume metadata: name: bmcpfs spec: accessModes: - ReadWriteMany capacity: storage: 10Ti claimRef: name: bmcpfs namespace: default csi: driver: bmcpfsplugin.csi.alibabacloud.com volumeAttributes: # Required if pods schedule to non-Lingjun nodes or cross-zone automatic VPC switching is enabled. Mounting fails otherwise. vpcMountTarget: cpfs-***-vpc-***.<Region>.cpfs.aliyuncs.com # If pods schedule to nodes in a different zone than the bmcpfs file system, use the vpcMountTarget to access CPFS. mountpointAutoSwitch: "true" # Replace volumeHandle with your CPFS for Lingjun file system ID. volumeHandle: bmcpfs-***** mountOptions: [] --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: bmcpfs namespace: default spec: accessModes: - ReadWriteMany resources: requests: storage: 10Ti volumeMode: Filesystem volumeName: bmcpfs-
Parameter PV
Parameter
Description
accessModesMode akses untuk PV.
capacity.storageKapasitas penyimpanan yang dideklarasikan. Deklarasi ini tidak memengaruhi kapasitas aktual.
csi.driverTipe driver. Untuk CPFS for Lingjun, gunakan
bmcpfsplugin.csi.alibabacloud.com.csi.volumeAttributes.vpcMountTargetNama domain Titik pemasangan VPC untuk CPFS. Meninggalkan ini kosong menyebabkan pemasangan gagal pada node non-Lingjun.
Jangan atur ini jika pod dijadwalkan ke Node Lingjun.
csi.volumeAttributes.mountpointAutoSwitchIzinkan bmcpfs untuk beralih secara otomatis antara titik pemasangan VSC default dan titik pemasangan VPC yang ditentukan.
Gunakan bersama
csi.volumeAttributes.vpcMountTarget.csi.volumeHandleID sistem file CPFS.
mountOptionsOpsi pemasangan.
-
Parameter PVC
Parameter
Description
accessModesMode akses yang diminta oleh PVC. Harus sesuai dengan PV.
resources.requests.storageKapasitas penyimpanan yang dialokasikan ke pod. Tidak boleh melebihi kapasitas PV.
volumeModeMode pemasangan. Atur ke
Filesystem.volumeNameNama PV yang akan di-bind ke PVC ini.
-
-
Buat PV dan PVC.
kubectl apply -f bmcpfs-pv-pvc.yaml
-
-
Konfirmasi bahwa PVC terikat ke PV.
kubectl get pvc bmcpfsOutput yang diharapkan:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE bmcpfs Bound bmcpfs 10Ti RWX <unset> 51sNilai
STATUSadalahBound. Pengikatan berhasil.
Step 3: Deploy an Application and Mount CPFS
Scenario 1: Mount the Entire CPFS File System
Skenario ini memasang seluruh sistem file CPFS ke dalam kontainer.
-
Buat file bernama
cpfs-test.yamlmenggunakan YAML di bawah ini. File ini mendeklarasikan deployment yang memasang volume persisten statis CPFS for Lingjun.apiVersion: apps/v1 kind: Deployment metadata: name: cpfs-test labels: app: cpfs-test spec: replicas: 2 selector: matchLabels: app: cpfs-test template: metadata: labels: app: cpfs-test spec: containers: - name: nginx image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6 ports: - containerPort: 80 volumeMounts: - name: pvc-cpfs mountPath: /data volumes: - name: pvc-cpfs persistentVolumeClaim: claimName: bmcpfs -
Buat deployment tersebut.
kubectl create -f cpfs-test.yaml -
Periksa status deployment pod.
kubectl get pod -l app=cpfs-testOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE cpfs-test-76b77d64b5-2hw96 1/1 Running 0 42s cpfs-test-76b77d64b5-dnwdx 1/1 Running 0 42s -
Masuk ke salah satu pod dan verifikasi bahwa volume persisten statis CPFS for Lingjun berhasil dipasang.
kubectl exec -it <pod-name> -- mount | grep /dataOutput yang diharapkan menunjukkan pemasangan berhasil:
bindroot-f0a5c-******:cpfs-*******-vpc-****.cn-shanghai.cpfs.aliyuncs.com:/ on /data type fuse.aliyun-alinas-efc (rw,relatime,user_id=0,group_id=0,default_permissions,allow_other,max_read=1048576)
Scenario 2: Mount a Subdirectory of the CPFS File System
Dalam skenario penyimpanan bersama—seperti pengaturan multi-penyewa atau multitasking—Anda dapat memungkinkan beberapa pod aplikasi berbagi satu volume CPFS sekaligus menjaga data mereka terisolasi di direktori terpisah. Gunakan bidang volumeMounts.subPath untuk melakukan ini.
-
Buat file bernama pod.yaml menggunakan konten di bawah ini. Pod ini menjalankan dua kontainer. Masing-masing memasang subdirektori berbeda dari PVC yang sama (
bmcpfs) menggunakansubPath.Jika direktori
subPath(misalnya,workspace/alpha) belum ada di sistem file CPFS, sistem akan membuatnya secara otomatis.apiVersion: v1 kind: Pod metadata: name: cpfs-subpath-demo-pod spec: containers: - name: task-alpha-container image: busybox:1.35 command: ["/bin/sh", "-c", "sleep 3600"] volumeMounts: - name: cpfs-storage mountPath: /data/workspace # Jalur pemasangan di dalam kontainer subPath: workspace/alpha # Pasang subdirektori workspace/alpha—bukan volume penuh - name: task-beta-container image: busybox:1.35 command: ["/bin/sh", "-c", "sleep 3600"] volumeMounts: - name: cpfs-storage mountPath: /data/workspace # Jalur pemasangan bisa identik subPath: workspace/beta # Pasang subdirektori workspace/beta—bukan volume penuh volumes: - name: cpfs-storage persistentVolumeClaim: claimName: bmcpfs # Referensi PVC yang dibuat sebelumnya -
Terapkan pod tersebut.
kubectl apply -f pod.yaml -
Verifikasi pemasangan dan akses tulis untuk kontainer task-alpha.
-
Sambungkan ke kontainer task-alpha.
kubectl exec -it cpfs-subpath-demo-pod -c task-alpha-container -- /bin/sh -
Periksa sistem file yang dipasang untuk memastikan volume CPFS hadir.
df -hOutput yang diharapkan mengonfirmasi direktori bersama (/share) dipasang di /data/workspace di dalam kontainer:
Filesystem Size Used Available Use% Mounted on ... 192.XX.XX.0:/share 10.0T 1.0G 10.0T 0% /data/workspace ... -
Periksa struktur direktori induk dari titik pemasangan.
ls -l /data/Output yang diharapkan menunjukkan subdirektori workspace ada di bawah /data:
total 4 drwxr-xr-x 2 root root 4096 Aug 15 10:00 workspace -
Buat file di direktori yang dipasang untuk menguji akses tulis.
echo "hello from alpha" > /data/workspace/alpha.log exit
-
-
Verifikasi pemasangan dan isolasi data untuk kontainer task-beta.
-
Sambungkan ke kontainer
task-beta.kubectl exec -it cpfs-subpath-demo-pod -c task-beta-container -- /bin/sh -
Buat file di titik pemasangan kontainer (/data/workspace).
echo "hello from beta" > /data/workspace/beta.log -
Daftar file di /data/workspace/.
ls -l /data/workspace/Output yang diharapkan menunjukkan beta.log berhasil ditulis dan alpha.log tidak ada. Data terisolasi antar kontainer:
total 4 -rw-r--r-- 1 root root 16 Aug 15 10:05 beta.log
-