Cloud Parallel File System (CPFS) for Lingjun menyediakan throughput dan IOPS tinggi dengan akselerasi jaringan end-to-end berbasis Remote Direct Memory Access (RDMA), menjadikannya ideal untuk skenario AI dan komputasi-intensif seperti AI-Generated Content (AIGC) serta kendaraan otonom. ACK mendukung pemasangan sistem file CPFS for Lingjun sebagai volume persisten (PV) yang diprovision secara statis.
Pilih metode pemasangan
Berdasarkan Container Storage Interface (CSI), ACK mendukung pemasangan sistem file CPFS for Lingjun sebagai PV dan klaim volume persisten (PVC) yang diprovision secara statis. Add-on CSI secara otomatis memilih metode pemasangan optimal berdasarkan tipe node pod:
Mounting method | Supported nodes | Requirements |
Virtual storage channel (VSC) | Lingjun nodes only | No additional configuration required. |
VPC | Non-Lingjun nodes | Create a VPC mount target in the same VPC as the cluster nodes. |
Sebelum memulai, identifikasi jalur mana yang berlaku untuk kluster Anda:
Pod berjalan di Lingjun nodes—pemasangan VSC secara default. Lewati pembuatan VPC mount target.
Pod berjalan di non-Lingjun nodes—diperlukan pemasangan VPC. Buat VPC mount target pada Langkah 1.
Pod berjalan di kedua tipe node—atur kedua parameter
vpcMountTargetdanmountpointAutoSwitch: "true"dalam PV. Add-on CSI akan beralih secara otomatis.
Prasyarat
Sebelum memulai, pastikan Anda telah:
Meninjau batasan untuk CPFS for Lingjun
Kluster ACK yang menjalankan Kubernetes 1.26 atau lebih baru. Upgrade jika diperlukan.
Node yang menjalankan Alibaba Cloud Linux 3
Add-on penyimpanan berikut pada versi yang disyaratkan (verifikasi dan upgrade di halaman Add-ons):
Add-on CSI (csi-plugin dan csi-provisioner): v1.33.1 atau lebih baru (manage CSI add-ons).
cnfs-nas-daemon: 0.1.2 atau lebih baru
bmcpfs-csi: mencakupbmcpfs-csi-controller(add-on control-plane yang dikelola oleh ACK) danbmcpfs-csi-node(DaemonSet sisi node)
Catatan penggunaan
Zona pemasangan VSC: Node yang menjalankan pod harus berada dalam
hpn-zoneyang sama dengan instans sistem file CPFS for Lingjun.Inisialisasi node: Node Lingjun harus dikaitkan dengan sistem file CPFS for Lingjun selama inisialisasi. Jika tidak, pemasangan CSI akan gagal.
Drain node: Sebelum mendekomisioning node Lingjun yang rusak, drain semua pod dari node tersebut. Melewatkan langkah ini menyebabkan ketidakkonsistenan metadata kluster dan sumber daya pod yatim yang tidak dapat dibersihkan.
Satu PV per instans CPFS: Pemasangan beberapa subdirektori dari sistem file CPFS yang sama sebagai PV terpisah ke satu pod tidak didukung. Karena keterbatasan driver, hal ini menyebabkan kegagalan startup pod. Buat satu PV/PVC dan gunakan
volumeMounts.subPathuntuk memasang subdirektori.subPathmenggunakanbind mountringan tanpa overhead performa.
Langkah 1: Buat sistem file CPFS
Buat sistem file CPFS for Lingjun dan catat file system ID.
(Opsional) Untuk node non-Lingjun, buat VPC mount target di VPC yang sama dengan node kluster Anda dan catat nama domain mount target. Format:
cpfs-*-vpc-*.<Region>.cpfs.aliyuncs.com.Tidak diperlukan jika pod berjalan di node Lingjun (pemasangan VSC secara default).
Langkah 2: Buat PV dan PVC
Simpan templat berikut sebagai
bmcpfs-pv-pvc.yaml, ganti placeholder dengan ID sistem file Anda dan (jika diperlukan) VPC mount target.Parameter PV
Parameter
Description
Required
accessModesMode akses untuk PV.
Yes
capacity.storageKapasitas penyimpanan yang dideklarasikan. Tidak memengaruhi kapasitas aktual.
Yes
csi.driverTipe driver. Untuk CPFS for Lingjun, gunakan
bmcpfsplugin.csi.alibabacloud.com.Yes
csi.volumeHandleID sistem file CPFS for Lingjun.
Yes
csi.volumeAttributes.vpcMountTargetNama domain VPC mount target. Diperlukan untuk node non-Lingjun; abaikan jika pod hanya dijadwalkan ke node Lingjun.
Conditional
csi.volumeAttributes.mountpointAutoSwitchMengaktifkan peralihan otomatis antara titik pemasangan VSC dan VPC. Gunakan bersama
vpcMountTarget.No
mountOptionsOpsi pemasangan.
No
Parameter PVC
Parameter
Description
Required
accessModesMode akses yang diminta oleh PVC. Harus sesuai dengan PV.
Yes
resources.requests.storageKapasitas penyimpanan yang dialokasikan ke pod. Tidak boleh melebihi kapasitas PV.
Yes
volumeModeMode pemasangan. Atur ke
Filesystem.Yes
volumeNameNama PV yang akan di-bind ke PVC ini.
Yes
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. # Omit if pods schedule only to Lingjun nodes. vpcMountTarget: cpfs-***-vpc-***.<Region>.cpfs.aliyuncs.com # Enables automatic switching between VSC and VPC mount points. # Use together with vpcMountTarget. mountpointAutoSwitch: "true" # Replace 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: bmcpfsTerapkan konfigurasi.
kubectl apply -f bmcpfs-pv-pvc.yamlKonfirmasi 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> 51sSTATUSbernilaiBound, yang mengonfirmasi PVC terikat ke PV.
Langkah 3: Deploy workload
Skenario 1: Pasang seluruh sistem file CPFS
Gunakan pendekatan ini ketika semua kontainer memerlukan akses penuh ke sistem file CPFS.
Simpan templat YAML berikut sebagai
cpfs-test.yaml.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: bmcpfsBuat Deployment.
kubectl create -f cpfs-test.yamlVerifikasi kedua pod sedang berjalan.
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 42sVerifikasi pemasangan volume CPFS di dalam pod.
kubectl exec -it <pod-name> -- mount | grep /dataOutput yang diharapkan:
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)Tipe pemasangan
fuse.aliyun-alinas-efcdi/datamengonfirmasi volume CPFS telah dipasang.
Skenario 2: Pasang subdirektori untuk isolasi data
Dalam skenario penyimpanan bersama seperti pengaturan multi-penyewa atau multitasking, beberapa kontainer dapat berbagi satu volume CPFS sekaligus mengisolasi data di direktori terpisah. Gunakan volumeMounts.subPath untuk memasang subdirektori berbeda ke kontainer berbeda dari PVC yang sama.
Jika direktorisubPath(misalnya,workspace/alpha) belum ada, direktori tersebut akan dibuat secara otomatis.
Simpan templat YAML berikut sebagai
pod.yaml. Pod ini menjalankan dua kontainer, masing-masing memasang subdirektori berbeda dari PVC yang sama (bmcpfs).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 # Mount path inside the container subPath: workspace/alpha # Mount the workspace/alpha subdirectory only - name: task-beta-container image: busybox:1.35 command: ["/bin/sh", "-c", "sleep 3600"] volumeMounts: - name: cpfs-storage mountPath: /data/workspace # Mount paths can be identical across containers subPath: workspace/beta # Mount the workspace/beta subdirectory only volumes: - name: cpfs-storage persistentVolumeClaim: claimName: bmcpfs # Reference the PVC created earlierDeploy pod.
kubectl apply -f pod.yamlVerifikasi pemasangan dan izin tulis untuk
task-alpha-container.Konek ke kontainer.
kubectl exec -it cpfs-subpath-demo-pod -c task-alpha-container -- /bin/shKonfirmasi volume CPFS telah dipasang.
df -hOutput yang diharapkan (direktori bersama dipasang di
/data/workspace):Filesystem Size Used Available Use% Mounted on ... 192.XX.XX.0:/share 10.0T 1.0G 10.0T 0% /data/workspace ...Entri filesystem di
/data/workspacemengonfirmasi subdirektori CPFS telah dipasang.Periksa struktur direktori induk.
ls -l /data/Output yang diharapkan:
total 4 drwxr-xr-x 2 root root 4096 Aug 15 10:00 workspaceTulis file uji dan keluar.
echo "hello from alpha" > /data/workspace/alpha.log exit
Verifikasi pemasangan
task-beta-containerdan isolasi data.Konek ke kontainer.
kubectl exec -it cpfs-subpath-demo-pod -c task-beta-container -- /bin/shTulis file uji.
echo "hello from beta" > /data/workspace/beta.logDaftar file di titik pemasangan.
ls -l /data/workspace/Output yang diharapkan:
total 4 -rw-r--r-- 1 root root 16 Aug 15 10:05 beta.logbeta.logada tetapialpha.logtidak ada, yang mengonfirmasi isolasi data antar kontainer.
<