全部产品
Search
文档中心

Container Service for Kubernetes:Gunakan static persistent volumes CPFS for Lingjun

更新时间:Jan 22, 2026

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

Penting

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.

        Klik untuk melihat pengenalan cnfs-nas-daemon

        cnfs-nas-daemon mengelola proses EFC. Komponen ini memiliki konsumsi sumber daya tinggi dan secara langsung memengaruhi kinerja penyimpanan. Anda dapat menyesuaikan konfigurasi sumber dayanya pada halaman Component Management. Strategi yang direkomendasikan adalah sebagai berikut:

        • CPU: Permintaan CPU berkaitan dengan total bandwidth node. Aturan perhitungannya adalah mengalokasikan 0,5 core untuk setiap bandwidth 1 Gb/s dan menambahkan 1 core tambahan untuk manajemen metadata. Anda dapat menyesuaikan konfigurasi CPU berdasarkan aturan ini.

          Misalnya, untuk node dengan network interface controller (NIC) 100 Gb/s, permintaan CPU yang direkomendasikan adalah 100 × 0,5 + 1 = 51 core.
        • Memori: CPFS for Lingjun diakses melalui Filesystem in Userspace (FUSE). Cache baca/tulis data dan metadata file keduanya mengonsumsi memori. Anda dapat mengatur permintaan memori menjadi 15% dari total memori node.

        Setelah menyesuaikan konfigurasi, Anda dapat melakukan penskalaan sumber daya secara dinamis berdasarkan beban kerja aktual.

        Penting
        • Cara pembaruan diterapkan: Kebijakan pembaruan default untuk DaemonSet cnfs-nas-daemon adalah OnDelete. Setelah Anda menyesuaikan CPU atau Memori pada halaman Component Management, Anda harus menghapus Pod cnfs-nas-daemon asli pada node secara manual. Tindakan ini memicu pembuatan ulang dan menerapkan konfigurasi baru.

          Untuk memastikan stabilitas bisnis, kami merekomendasikan Anda melakukan operasi ini selama jam sepi.

        • Risiko operasi: Menghapus atau me-restart Pod cnfs-nas-daemon akan mengganggu sementara layanan pemasangan CPFS pada node tersebut.

          • Node yang tidak mendukung hot upgrade untuk titik pemasangan①: Operasi ini merupakan gangguan perangkat keras dan menyebabkan Pod aplikasi berjalan tidak normal. Anda harus menghapus Pod aplikasi secara manual dan menunggu hingga Pod tersebut dimulai ulang untuk pulih.

          • Node yang mendukung hot upgrade①: Pod aplikasi dapat pulih secara otomatis setelah Pod cnfs-nas-daemon dimulai ulang.

          ①: Node yang memenuhi kondisi berikut mendukung hot upgrade:

          • Kernel sistem node adalah 5.10.134-18 atau lebih baru.

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

          • Versi cnfs-nas-daemon adalah 0.1.9-compatible.1 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 volumeMounts dengan bidang subPath di Pod untuk memasang subdirektori yang diperlukan secara terpisah.

    subPath diimplementasikan berdasarkan mekanisme bind mount ringan dan tidak menimbulkan overhead kinerja tambahan.

Langkah 1: Buat sistem file CPFS

  1. Buat sistem file CPFS for Lingjun dan catat ID sistem file tersebut. Untuk informasi selengkapnya, lihat Create a CPFS for Lingjun file system.

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

  1. Anda dapat membuat PV dan PVC berdasarkan sistem file CPFS yang sudah ada.

    1. 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: bmcpfs
      • Parameter PV

        Parameter

        Deskripsi

        accessModes

        Mode akses PV.

        capacity.storage

        Kapasitas penyimpanan yang dideklarasikan untuk volume. Ini hanya deklarasi dan tidak memengaruhi kapasitas aktual.

        csi.driver

        Tipe driver. Saat memasang CPFS for Lingjun, nilai ini tetap bmcpfsplugin.csi.alibabacloud.com.

        csi.volumeAttributes.vpcMountTarget

        Nama 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.mountpointAutoSwitch

        Menentukan 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.volumeHandle

        ID sistem file CPFS.

        mountOptions

        Parameter pemasangan.

      • Parameter PVC

        Parameter

        Deskripsi

        accessModes

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

        resources.requests.storage

        Kapasitas penyimpanan yang dialokasikan ke Pod. Tidak boleh lebih besar daripada kapasitas PV.

        volumeMode

        Mode pemasangan. Harus diatur ke Filesystem.

        volumeName

        Nama PV yang akan diikat oleh PVC.

    2. Buat PV dan PVC.

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

    kubectl get pvc bmcpfs

    Keluaran yang diharapkan:

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

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

  1. Anda dapat menggunakan konten YAML berikut untuk membuat file bernama cpfs-test.yaml guna 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: bmcpfs
  2. Buat Deployment.

    kubectl create -f cpfs-test.yaml
  3. Periksa status penyebaran pod.

    kubectl get pod -l app=cpfs-test

    Keluaran 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. Masuk ke salah satu Pod untuk memverifikasi bahwa static PV CPFS for Lingjun telah dipasang.

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

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

  1. Buat file pod.yaml dengan konten berikut. Pod berisi dua kontainer yang memasang subdirektori berbeda dari PVC yang sama (bmcpfs) menggunakan subPath.

    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 sebelumnya
  2. Sebarkan pod.

    kubectl apply -f pod.yaml
  3. Verifikasi pemasangan dan operasi tulis untuk kontainer task-alpha.

    1. Sambungkan ke kontainer task-alpha.

      kubectl exec -it cpfs-subpath-demo-pod -c task-alpha-container -- /bin/sh
    2. Lihat sistem file yang dipasang untuk memastikan volume CPFS ada.

      df -h

      Output 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
      ...
    3. 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 workspace
    4. Buat file di direktori yang dipasang untuk memverifikasi izin tulis.

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

    1. Hubungkan ke kontainer task-beta.

      kubectl exec -it cpfs-subpath-demo-pod -c task-beta-container -- /bin/sh
    2. Buat file di titik pemasangan /data/workspace di dalam kontainer.

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