CPFS for Lingjun menyediakan throughput tinggi dan operasi input/output per detik (IOPS). Layanan ini mendukung akselerasi jaringan RDMA end-to-end dan cocok untuk skenario komputasi cerdas, seperti AIGC dan kendaraan otonom. ACK memungkinkan Anda menyambungkan sistem file CPFS for Lingjun ke beban kerja sebagai static persistent volumes (PVs).
CPFS for Lingjun saat ini berada dalam pratinjau undangan dan hanya didukung di beberapa wilayah dan zona tertentu. Untuk menggunakan fitur ini, Anda dapat menghubungi account manager Anda untuk meminta akses.
Pengenalan fungsi
Berdasarkan komponen Container Storage Interface (CSI), ACK mendukung penyambungan static PVs CPFS for Lingjun ke beban kerja menggunakan PV dan PersistentVolumeClaims (PVCs). CSI secara otomatis memilih metode pemasangan optimal berdasarkan tipe node tempat Pod dijadwalkan:
VSC mount: Metode pemasangan ini hanya didukung pada Node Lingjun. Untuk mengaktifkan fitur ini, submit a ticket kepada tim produk CPFS dan Lingjun agar ditambahkan ke daftar putih.
VPC mount: Metode pemasangan ini didukung pada node non-Lingjun. Metode ini dicapai dengan membuat Titik pemasangan VPC. Semua node dalam VPC yang sama kemudian dapat memasang dan mengakses sistem file tersebut.
Prasyarat
Anda sudah familiar dengan batasan CPFS untuk Lingjun.
Kluster memenuhi persyaratan berikut:
Versi kluster: 1.26 atau lebih baru. Untuk meningkatkan versi kluster, lihat Manually upgrade an ACK cluster.
Sistem operasi node: Alibaba Cloud Linux 3.
Komponen penyimpanan berikut telah diinstal dan memenuhi persyaratan versi.
Pada halaman Component Management, Anda dapat memeriksa versi komponen serta menginstal atau melakukan peningkatan komponen.
Komponen CSI (csi-plugin dan csi-provisioner): v1.33.1 atau lebih baru. Untuk informasi selengkapnya tentang cara melakukan peningkatan, lihat Manage CSI components.
komponen cnfs-nas-daemon: 0.1.2 atau lebih baru.
komponen bmcpfs-csi: Komponen ini mencakup bmcpfs-csi-controller, komponen lapisan kontrol yang dikelola oleh ACK, dan bmcpfs-csi-node, komponen sisi node yang diterapkan sebagai DaemonSet di kluster.
Catatan
Saat menggunakan VSC mount, node tempat Pod berjalan harus berada dalam hpn-zone yang sama dengan instans sistem file CPFS for Lingjun.
Selama inisialisasi, Node Lingjun harus dikaitkan dengan instans CPFS for Lingjun. Jika tidak, instans tersebut tidak dapat dipasang menggunakan CSI.
Sebelum mengambil offline Node Lingjun yang bermasalah, Anda harus terlebih dahulu mengosongkan Pod-nya. Jika tidak, metadata kluster menjadi tidak konsisten, dan sumber daya Pod tertinggal serta tidak dapat dikembalikan.
Tidak didukung memasang subdirektori berbeda dari instans CPFS yang sama menggunakan beberapa PV dalam satu Pod yang sama. Karena keterbatasan driver dasar, konfigurasi ini menyebabkan Pod gagal memasang dan memulai.
Anda hanya dapat membuat satu PV/PVC untuk instans CPFS tersebut. Kemudian, Anda dapat menggunakan konfigurasi
volumeMountsdengan bidangsubPathdi Pod untuk memasang subdirektori yang diperlukan secara terpisah.subPathdiimplementasikan berdasarkan mekanismebind mountringan dan tidak menimbulkan overhead kinerja tambahan.
Langkah 1: Buat sistem file CPFS
Buat sistem file CPFS for Lingjun dan catat ID sistem file tersebut. Untuk informasi selengkapnya, lihat Create a CPFS for Lingjun file system.
(Opsional) Untuk memasang dari node non-Lingjun, buat Titik pemasangan VPC dalam VPC yang sama dengan node kluster dan catat nama domain titik pemasangan tersebut. Nama domain menggunakan format
cpfs-***-vpc-***.<Region>.cpfs.aliyuncs.com.Jika Pod dijadwalkan ke Node Lingjun, Pod tersebut menggunakan VSC mount secara default. Dalam kasus ini, langkah ini tidak diperlukan.
Langkah 2: Buat PV dan PVC
Anda dapat membuat PV dan PVC berdasarkan sistem file CPFS yang sudah ada.
Anda dapat memodifikasi contoh YAML berikut dan menyimpannya 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: # Bidang ini wajib diisi jika Pod dijadwalkan ke node non-Lingjun atau jika cross-domain automatic VPC switchover diaktifkan. Jika tidak, pemasangan akan gagal. vpcMountTarget: cpfs-***-vpc-***.<Region>.cpfs.aliyuncs.com # Jika Pod dijadwalkan ke node di zona berbeda dari bmcpfs saat ini, titik pemasangan vpcMountTarget akan digunakan secara otomatis untuk mengakses penyimpanan CPFS. mountpointAutoSwitch: "true" # Ganti volumeHandle dengan ID sistem file CPFS for Lingjun. volumeHandle: bmcpfs-***** mountOptions: [] --- apiVersion: v1 kind: PersistentVolumeClaim metadata: name: bmcpfs namespace: default spec: accessModes: - ReadWriteMany resources: requests: storage: 10Ti volumeMode: Filesystem volumeName: bmcpfsParameter PV
Parameter
Deskripsi
accessModesMode akses PV.
capacity.storageKapasitas penyimpanan yang dideklarasikan untuk volume. Ini hanya deklarasi dan tidak memengaruhi kapasitas aktual.
csi.driverTipe driver. Saat memasang CPFS for Lingjun, nilai ini tetap
bmcpfsplugin.csi.alibabacloud.com.csi.volumeAttributes.vpcMountTargetNama domain Titik pemasangan VPC untuk CPFS. Jika dibiarkan kosong, pemasangan akan gagal pada node non-Lingjun.
Jika Pod dijadwalkan ke Node Lingjun, Anda tidak perlu mengatur ini.
csi.volumeAttributes.mountpointAutoSwitchMenentukan apakah bmcpfs diizinkan untuk secara otomatis beralih antara titik pemasangan VSC (dibuat dan diperoleh secara default) dan titik pemasangan VPC (harus ditentukan).
Digunakan bersama dengan
csi.volumeAttributes.vpcMountTarget.csi.volumeHandleID sistem file CPFS.
mountOptionsParameter pemasangan.
Parameter PVC
Parameter
Deskripsi
accessModesMode akses yang diminta PVC untuk PV. Harus sesuai dengan PV.
resources.requests.storageKapasitas penyimpanan yang dialokasikan ke Pod. Tidak boleh lebih besar daripada kapasitas PV.
volumeModeMode pemasangan. Harus diatur ke
Filesystem.volumeNameNama PV yang akan diikat oleh PVC.
Buat PV dan PVC.
kubectl apply -f bmcpfs-pv-pvc.yaml
Konfirmasi bahwa PVC telah terikat ke PV.
kubectl get pvc bmcpfsKeluaran yang diharapkan:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE bmcpfs Bound bmcpfs 10Ti RWX <unset> 51sSTATUSbernilaiBound. Hal ini menunjukkan bahwa PV dan PVC berhasil diikat.
Langkah 3: Buat aplikasi dan pasang CPFS
Skenario 1: Pasang seluruh sistem file CPFS
Pada skenario ini, seluruh sistem file CPFS dipasang ke dalam kontainer.
Anda dapat menggunakan konten YAML berikut untuk membuat file bernama
cpfs-test.yamlguna mendeklarasikan static PV 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: bmcpfsBuat Deployment.
kubectl create -f cpfs-test.yamlPeriksa status penyebaran pod.
kubectl get pod -l app=cpfs-testKeluaran yang diharapkan:
NAME READY STATUS RESTARTS AGE cpfs-test-76b77d64b5-2hw96 1/1 Running 0 42s cpfs-test-76b77d64b5-dnwdx 1/1 Running 0 42sMasuk ke salah satu Pod untuk memverifikasi bahwa static PV CPFS for Lingjun telah dipasang.
kubectl exec -it <pod-name> -- mount | grep /dataOutput berikut menunjukkan bahwa static PV CPFS for Lingjun telah dipasang.
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)
Skenario 2: Pasang subdirektori sistem file CPFS
Dalam skenario penyimpanan bersama, Anda dapat menggunakan volumeMounts.subPath untuk mencapai isolasi data bagi beberapa penyewa atau tugas. Hal ini memungkinkan beberapa Pod aplikasi berbagi volume CPFS yang sama, namun masing-masing memiliki direktori independen sendiri.
Buat file pod.yaml dengan konten berikut. Pod berisi dua kontainer yang memasang subdirektori berbeda dari PVC yang sama (
bmcpfs) menggunakansubPath.Saat Pod dipasang, jika subdirektori yang ditentukan oleh
subPath(misalnya,workspace/alpha) belum ada di sistem file CPFS, subdirektori tersebut akan dibuat 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 dalam volume, bukan seluruh volume - name: task-beta-container image: busybox:1.35 command: ["/bin/sh", "-c", "sleep 3600"] volumeMounts: - name: cpfs-storage mountPath: /data/workspace # Jalur pemasangan di dalam kontainer bisa sama subPath: workspace/beta # Pasang subdirektori workspace/beta dalam volume, bukan seluruh volume volumes: - name: cpfs-storage persistentVolumeClaim: claimName: bmcpfs # Referensi PVC yang telah dibuat sebelumnyaSebarkan pod.
kubectl apply -f pod.yamlVerifikasi pemasangan dan operasi tulis untuk kontainer task-alpha.
Sambungkan ke kontainer task-alpha.
kubectl exec -it cpfs-subpath-demo-pod -c task-alpha-container -- /bin/shLihat sistem file yang dipasang untuk memastikan volume CPFS ada.
df -hOutput berikut menunjukkan bahwa direktori bersama (/share) dipasang ke jalur /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 berikut menunjukkan bahwa subdirektori bernama workspace ada di direktori /data.
total 4 drwxr-xr-x 2 root root 4096 Aug 15 10:00 workspaceBuat file di direktori yang dipasang untuk memverifikasi izin tulis.
echo "hello from alpha" > /data/workspace/alpha.log exit
Verifikasi pemasangan dan isolasi data untuk kontainer task-beta.
Hubungkan ke kontainer
task-beta.kubectl exec -it cpfs-subpath-demo-pod -c task-beta-container -- /bin/shBuat file di titik pemasangan /data/workspace di dalam kontainer.
echo "hello from beta" > /data/workspace/beta.logPeriksa file di direktori /data/workspace/.
ls -l /data/workspace/Output berikut menunjukkan bahwa beta.log telah ditulis dan alpha.log tidak ada. Artinya, data antara kedua kontainer terisolasi.
total 4 -rw-r--r-- 1 root root 16 Aug 15 10:05 beta.log