All Products
Search
Document Center

Container Service for Kubernetes:Gunakan volume provision statis CPFS for Lingjun

Last Updated:Aug 21, 2026

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 vpcMountTarget dan mountpointAutoSwitch: "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

      Konfigurasikan sumber daya cnfs-nas-daemon

      Add-on cnfs-nas-daemon mengelola proses Elastic File Client (EFC), mengonsumsi sumber daya signifikan, dan berdampak langsung terhadap performa penyimpanan. Sesuaikan alokasi sumber daya di halaman Add-ons:

      • CPU: Bergantung pada bandwidth total node. Rekomendasi: 0,5 core per 1 Gbps bandwidth, ditambah 1 core tambahan untuk manajemen metadata.

        Contoh: Untuk node 100 Gbps, permintaan CPU adalah 100 × 0,5 + 1 = 51 core.
      • Memory: CPFS for Lingjun menggunakan Filesystem in USErspace (FUSE), sehingga cache baca/tulis dan metadata mengonsumsi memori. Atur permintaan menjadi 15% dari total memori node.

      Sesuaikan sesuai kebutuhan beban kerja Anda.

      Penting
      • Perilaku pembaruan: cnfs-nas-daemon menggunakan strategi pembaruan OnDelete secara default. Setelah menyesuaikan CPU atau memori di halaman Add-ons, hapus secara manual pod cnfs-nas-daemon di setiap node agar dibuat ulang dengan konfigurasi baru. Lakukan selama jam sepi.

      • Risiko gangguan: Menghapus atau me-restart pod cnfs-nas-daemon sementara mengganggu layanan pemasangan CPFS di node tersebut.

        • Untuk node tanpa dukungan hot-upgrade: Gangguan keras yang menyebabkan pod aplikasi gagal. Hapus dan restart pod aplikasi secara manual untuk memulihkan layanan.

        • Untuk node dengan dukungan hot-upgrade: Pod aplikasi pulih secara otomatis setelah cnfs-nas-daemon dijalankan ulang.

        ①: Sebuah node mendukung hot upgrade jika memenuhi semua kondisi berikut:

        • Versi kernel node adalah 5.10.134-18 atau lebih baru.

        • bmcpfs-csi-controller dan bmcpfs-csi-plugin versi 1.35.1 atau lebih baru.

        • cnfs-nas-daemon versi 0.1.9-compatible.1 atau lebih baru.

    • bmcpfs-csi: mencakup bmcpfs-csi-controller (add-on control-plane yang dikelola oleh ACK) dan bmcpfs-csi-node (DaemonSet sisi node)

Catatan penggunaan

  • Zona pemasangan VSC: Node yang menjalankan pod harus berada dalam hpn-zone yang 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.subPath untuk memasang subdirektori. subPath menggunakan bind mount ringan tanpa overhead performa.

Langkah 1: Buat sistem file CPFS

  1. Buat sistem file CPFS for Lingjun dan catat file system ID.

  2. (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

  1. 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

    accessModes

    Mode akses untuk PV.

    Yes

    capacity.storage

    Kapasitas penyimpanan yang dideklarasikan. Tidak memengaruhi kapasitas aktual.

    Yes

    csi.driver

    Tipe driver. Untuk CPFS for Lingjun, gunakan bmcpfsplugin.csi.alibabacloud.com.

    Yes

    csi.volumeHandle

    ID sistem file CPFS for Lingjun.

    Yes

    csi.volumeAttributes.vpcMountTarget

    Nama domain VPC mount target. Diperlukan untuk node non-Lingjun; abaikan jika pod hanya dijadwalkan ke node Lingjun.

    Conditional

    csi.volumeAttributes.mountpointAutoSwitch

    Mengaktifkan peralihan otomatis antara titik pemasangan VSC dan VPC. Gunakan bersama vpcMountTarget.

    No

    mountOptions

    Opsi pemasangan.

    No

    Parameter PVC

    Parameter

    Description

    Required

    accessModes

    Mode akses yang diminta oleh PVC. Harus sesuai dengan PV.

    Yes

    resources.requests.storage

    Kapasitas penyimpanan yang dialokasikan ke pod. Tidak boleh melebihi kapasitas PV.

    Yes

    volumeMode

    Mode pemasangan. Atur ke Filesystem.

    Yes

    volumeName

    Nama 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: bmcpfs
  2. Terapkan konfigurasi.

    kubectl apply -f bmcpfs-pv-pvc.yaml
  3. Konfirmasi bahwa PVC terikat ke PV.

    kubectl get pvc bmcpfs

    Output yang diharapkan:

    NAME     STATUS   VOLUME   CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
    bmcpfs   Bound    bmcpfs   10Ti       RWX                           <unset>                 51s

    STATUS bernilai Bound, 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.

  1. 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: bmcpfs
  2. Buat Deployment.

    kubectl create -f cpfs-test.yaml
  3. Verifikasi kedua pod sedang berjalan.

    kubectl get pod -l app=cpfs-test

    Output 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
  4. Verifikasi pemasangan volume CPFS di dalam pod.

    kubectl exec -it <pod-name> -- mount | grep /data

    Output 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-efc di /data mengonfirmasi 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 direktori subPath (misalnya, workspace/alpha) belum ada, direktori tersebut akan dibuat secara otomatis.
  1. 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 earlier
  2. Deploy pod.

    kubectl apply -f pod.yaml
  3. Verifikasi pemasangan dan izin tulis untuk task-alpha-container.

    1. Konek ke kontainer.

      kubectl exec -it cpfs-subpath-demo-pod -c task-alpha-container -- /bin/sh
    2. Konfirmasi volume CPFS telah dipasang.

      df -h

      Output 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/workspace mengonfirmasi subdirektori CPFS telah dipasang.

    3. Periksa struktur direktori induk.

      ls -l /data/

      Output yang diharapkan:

      total 4
      drwxr-xr-x    2 root     root          4096 Aug 15 10:00 workspace
    4. Tulis file uji dan keluar.

      echo "hello from alpha" > /data/workspace/alpha.log
      exit
  4. Verifikasi pemasangan task-beta-container dan isolasi data.

    1. Konek ke kontainer.

      kubectl exec -it cpfs-subpath-demo-pod -c task-beta-container -- /bin/sh
    2. Tulis file uji.

      echo "hello from beta" > /data/workspace/beta.log
    3. Daftar 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.log

      beta.log ada tetapi alpha.log tidak ada, yang mengonfirmasi isolasi data antar kontainer.

<