All Products
Search
Document Center

Container Service for Kubernetes:Gunakan volume dinamis CPFS for Lingjun

Last Updated:Sep 10, 2026

Gunakan volume dinamis untuk menyediakan penyimpanan CPFS for Intelligent Computing LINGJUN (LINGJUN) sesuai permintaan tanpa perlu mengelola PV secara manual. Beberapa aplikasi dapat membaca dan menulis secara paralel, sehingga cocok untuk beban kerja pelatihan AI dan analitik data besar yang perlu berbagi kode, file konfigurasi, serta hasil komputasi.

Batasan

Pelanggaran terhadap batasan berikut dapat menyebabkan kegagalan pemasangan atau kondisi kluster yang tidak dapat dipulihkan.

  • Wajib berada dalam hpn-zone yang sama untuk pemasangan VSC: Node tempat Pod berjalan harus berada dalam hpn-zone yang sama dengan sistem file CPFS for LINGJUN.

  • Inisialisasi node: Node LINGJUN harus dikaitkan dengan sistem file CPFS for LINGJUN saat inisialisasi. Mengabaikan langkah ini menyebabkan kegagalan pemasangan CSI.

  • Satu sistem file per Pod: Jangan memasang beberapa volume dari sistem file CPFS for LINGJUN yang sama dalam satu Pod (misalnya, beberapa PV dengan bmcpfsId yang sama). Protokol native tidak mendukung pemasangan sistem file yang sama berkali-kali dalam satu Pod, bahkan ke subdirektori yang berbeda sekalipun.

  • Kosongkan node sebelum mematikannya: Kosongkan semua Pod dari node LINGJUN yang bermasalah sebelum mematikannya. Mengabaikan langkah ini menyisakan sumber daya Pod yang tidak dapat dipulihkan dan metadata kluster yang tidak konsisten.

Prasyarat

Pastikan Anda telah memenuhi hal-hal berikut:

  • Versi kluster 1.26 atau lebih baru (panduan peningkatan).

  • Node menjalankan Alibaba Cloud Linux 3.

  • Add-on penyimpanan berikut pada versi minimumnya. Instal atau tingkatkan melalui halaman Add-ons.

    Komponen

    Versi minimum

    CSI add-on (csi-plugin dan csi-provisioner)

    v1.33.1

    cnfs-nas-daemon add-on

    0.1.2

    bmcpfs-csi add-on (bmcpfs-csi-controller pada lapisan kontrol yang dikelola ACK dan bmcpfs-csi-node yang diterapkan sebagai DaemonSet pada node kluster)

    1.35.1

Konfigurasikan sumber daya cnfs-nas-daemon

cnfs-nas-daemon mengelola proses Elastic File Client (EFC) dan secara langsung memengaruhi kinerja penyimpanan. Konfigurasikan sumber dayanya melalui halaman Add-ons:

  • CPU: 0,5 core per 1 Gb/s bandwidth, ditambah 1 core untuk manajemen metadata. Contoh: NIC 100 Gb/s → 100 × 0,5 + 1 = 51 core.

  • Memori: 15% dari total memori node. CPFS for LINGJUN menggunakan FUSE, sehingga caching data dan metadata file keduanya mengonsumsi memori.

Sesuaikan batas sumber daya berdasarkan beban kerja aktual.

Penting

cnfs-nas-daemon menggunakan strategi pembaruan OnDelete. Setelah mengubah pengaturan di halaman Add-ons, hapus secara manual Pod cnfs-nas-daemon di setiap node agar perubahan diterapkan. Lakukan hal ini pada jam sepi.

  • Node tanpa dukungan hot upgrade: Menyebabkan gangguan perangkat keras. Pod aplikasi gagal dan harus dihapus secara manual, lalu mulai ulang dan pulih secara otomatis.

  • Node dengan dukungan hot upgrade: Pod pulih secara otomatis. Hot upgrade memerlukan: kernel 5.10.134-18+, bmcpfs-csi-controller dan bmcpfs-csi-plugin versi 1.35.1+, serta cnfs-nas-daemon versi 0.1.9-compatible.1+.

Langkah 1: Buat sistem file CPFS

  1. Buat sistem file CPFS for LINGJUN dan catat ID sistem filenya.

  2. (Opsional) Untuk memasang pada node non-LINGJUN, buat titik pemasangan VPC dalam VPC yang sama dengan node kluster Anda. Catat nama domain titik pemasangan tersebut (format: cpfs-*-vpc-*.<Region>.cpfs.aliyuncs.com).

    Jika semua Pod berjalan pada node LINGJUN, pemasangan VSC (Virtual Storage Controller) berlaku secara default. Lewati langkah ini.

Tinjau batasan CPFS for LINGJUN sebelum melanjutkan.

Langkah 2: Buat StorageClass

StorageClass menentukan parameter provisioning seperti ID sistem file dan kebijakan reclaim.

  1. Buat sc.yaml:

    Parameter

    Wajib

    Deskripsi

    bmcpfsId

    Ya

    ID sistem file CPFS for LINGJUN. Format: bmcpfs-xxxxxxxxx atau cpfs-xxxxxxxxx.

    path

    Tidak

    Subdirektori dalam sistem file. Volume dipasang di {path}/{volumeName}/. Default: /{volumeName}/.

    allowVolumeExpansion

    Tidak

    Parameter cadangan. Versi saat ini tidak mendukung ekspansi dinamis.

    reclaimPolicy

    Tidak

    Delete (default): menghapus fileset backend saat PVC dihapus. Retain: menyimpan fileset; memerlukan pembersihan manual. Gunakan Retain di lingkungan produksi.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-bmcpfs-test
    parameters:
      bmcpfsId: bmcpfs-xxxxxx
      vpcMountTarget: cpfs-xxxxx-vpc-xxxxx.cn-hangzhou.cpfs.aliyuncs.com
    provisioner: bmcpfsplugin.csi.alibabacloud.com
    reclaimPolicy: Delete
    volumeBindingMode: Immediate
    allowVolumeExpansion: true
  2. Terapkan StorageClass:

    kubectl apply -f sc.yaml

    Output yang diharapkan:

    storageclass.storage.k8s.io/alicloud-bmcpfs-test created

Langkah 3: Buat PVC

PVC mereferensikan StorageClass untuk meminta penyimpanan yang disediakan secara dinamis.

  1. Buat pvc.yaml:

    Parameter

    Deskripsi

    accessModes

    ReadWriteMany saja. Memungkinkan akses multi-Pod secara bersamaan.

    storage

    Kapasitas penyimpanan yang diminta. Mendukung satuan seperti Gi dan Ti.

    volumeMode

    Hanya Filesystem yang didukung.

    storageClassName

    Nama StorageClass. Memicu pembuatan volume dinamis.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: bmcpfs-vsc
      namespace: default
    spec:
      accessModes:
        - ReadWriteMany  # Mendukung baca-tulis bersamaan di banyak Pod
      resources:
        requests:
          storage: 10Ti  # Mendukung kapasitas besar (tingkat Ti)
      volumeMode: Filesystem  # Hanya Filesystem yang didukung
      storageClassName: alicloud-bmcpfs-test  # Harus sesuai dengan StorageClass yang dibuat di Langkah 2
  2. Terapkan PVC:

    kubectl apply -f pvc.yaml
  3. Verifikasi bahwa PVC telah terikat:

    kubectl get pvc bmcpfs-vsc -n default

    Output yang diharapkan:

    NAME         STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS           AGE
    bmcpfs-vsc   Bound    pvc-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx   10Ti       RWX            alicloud-bmcpfs-test   30s

    Saat STATUS bernilai Bound, PV dibuat secara otomatis. Konfirmasi provisioning:

    kubectl describe pvc bmcpfs-vsc -n default

    Periksa Events untuk pesan Provisioning succeeded.

Langkah 4: Terapkan beban kerja dan pasang PVC

Penyebaran berikut menjalankan tiga replika yang berbagi satu volume CPFS for LINGJUN.

  1. Buat deploy.yaml:

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: cpfs-shared-example
    spec:
      replicas: 3  # Tiga replika memverifikasi bahwa penyimpanan bersama berfungsi di banyak Pod
      selector:
        matchLabels:
          app: cpfs-shared-app
      template:
        metadata:
          labels:
            app: cpfs-shared-app
        spec:
          tolerations:
            - key: node-role.alibabacloud.com/lingjun
              operator: Exists
              effect: NoSchedule
          # Opsional: untuk mematok semua Pod ke node tertentu, hapus komentar dan atur nama node
          # nodeName: cn-hangzhou.10.XX.XX.226
          containers:
          - name: app-container
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            volumeMounts:
              - name: pvc-cpfs
                mountPath: /data  # Volume bersama dipasang di /data di dalam kontainer
            lifecycle:
              postStart:
                exec:
                  command:
                    - /bin/sh
                    - -c
                    - >
                      echo "Data written by $(hostname)" > /data/$(hostname).txt &&
                      echo "Deployment is running, check shared data in /data." &&
                      sleep 3600
          volumes:
            - name: pvc-cpfs
              persistentVolumeClaim:
                claimName: bmcpfs-vsc  # Merujuk ke PVC yang dibuat di Langkah 3
  2. Terapkan Penyebaran:

    kubectl apply -f deploy.yaml

    Output yang diharapkan:

    deployment.apps/cpfs-shared-example created

Bersihkan sumber daya

Hapus sumber daya dalam urutan berikut untuk menghindari biaya tak terduga dan menjaga keamanan data.

  1. Hapus beban kerja — Hentikan semua aplikasi yang menggunakan PVC. Hal ini melepas pemasangan volume.

    kubectl delete deployment <your-deployment-name>
  2. Hapus PVC — Hasilnya bergantung pada reclaimPolicy StorageClass:

    • Retain (disarankan): Fileset dan data CPFS for LINGJUN tetap utuh. Lanjutkan ke Langkah 3 untuk menghapus PV.

    • Delete: Menghapus permanen PV yang terikat beserta fileset backend-nya. Tindakan ini tidak dapat dikembalikan.

    kubectl delete pvc <your-pvc-name>
  3. Hapus PV (hanya jika reclaimPolicy bernilai Retain) — Setelah penghapusan PVC, PV berstatus Released. Hapus PV tersebut untuk menghapus sumber daya Kubernetes. Data backend tidak terpengaruh.

    kubectl delete pv <your-pv-name>
  4. (Opsional) Hapus StorageClass — Hapus jika tidak lagi diperlukan. Volume yang sudah ada tidak terpengaruh.

    kubectl delete sc <your-sc-name>
  5. Hapus sistem file CPFS for LINGJUN — Menghapus permanen seluruh data, termasuk data yang dipertahankan oleh kebijakan Retain. Pastikan tidak ada dependensi tersisa, lalu hapus sistem file.

Pemecahan Masalah

PVC tetap dalam status Pending

PVC yang terjebak dalam status Pending berarti provisioning gagal. Event PVC biasanya mengidentifikasi penyebabnya.

kubectl describe pvc <your-pvc-name> -n <your-namespace>

Periksa Events untuk peringatan. Penyebab umum:

  • StorageClass not found: storageClassName salah atau StorageClass tidak ada.

  • provisioning failed atau failed to create fileset: Masalah penyimpanan backend. Lanjutkan ke bawah.

Jika event menunjukkan masalah konfigurasi, periksa StorageClass dan verifikasi pendaftaran driver CSI:

# Periksa konfigurasi StorageClass
kubectl get storageclass <your-sc-name> -o yaml

# Verifikasi driver CSI telah terdaftar
kubectl get csidriver bmcpfsplugin.csi.alibabacloud.com

Pastikan bahwa:

  • provisioner sesuai dengan bmcpfsplugin.csi.alibabacloud.com.

  • bmcpfsId benar dan sistem file tersebut ada.

  • Jika get csidriver tidak menghasilkan output, driver belum terinstal. Instal bmcpfs-csi-controller, bmcpfs-csi-node, dan cnfs-nas-daemon dari halaman Add-ons.

Pod tetap dalam status ContainerCreating atau MountVolume.Setup failed

Pod telah mencapai node tetapi pemasangan volume gagal. Ikuti langkah-langkah berikut untuk mengidentifikasi penyebabnya.

  1. Periksa event Pod:

    kubectl describe pod <pod-name> -n <your-namespace>

    Periksa Events untuk pesan Warning seperti FailedMount atau MountVolume.Setup failed.

  2. Pastikan PVC telah terikat.

    kubectl get pvc <your-pvc-name>

    STATUS harus bernilai Bound. Jika berstatus Pending, lihat PVC tetap dalam status Pending.

  3. Jika sudah terikat, periksa log plugin CSI di sisi node:

    kubectl get pods -n kube-system -l app.kubernetes.io/name=bmcpfs-csi-driver \
      --field-selector spec.nodeName=<nodeName> \
      -o name | xargs kubectl logs -n kube-system -c csi-plugin

    Log ini menampilkan error konektivitas jaringan, izin titik pemasangan, dan error I/O.