All Products
Search
Document Center

Container Service for Kubernetes:Gunakan volume statis dengan CPFS General-purpose Edition

Last Updated:Sep 01, 2026

Topik ini menjelaskan cara memasang volume Cloud Parallel File System (CPFS) General-purpose Edition yang disediakan secara statis ke workload dalam kluster ACK. CPFS dirancang untuk workload komputasi kinerja tinggi (HPC), seperti pelatihan AI, kendaraan otonom, komputasi genetika, dan rendering video.

Cara kerja

Alur kerja utama untuk memasang volume penyimpanan statis CPFS General-purpose dalam kluster ACK adalah sebagai berikut.

  1. Buat PV: "Daftarkan" sistem file CPFS General-purpose yang sudah ada di kluster dengan mendeklarasikan alamat mount, kapasitas, mode akses, dan parameter lainnya.

  2. Buat PVC: Aplikasi "meminta" sumber daya penyimpanan terdaftar melalui PVC. PVC secara otomatis melakukan bind ke PV yang memenuhi kondisi yang ditentukan.

  3. Pasang di aplikasi: Pasang PVC yang telah terikat ke Pod aplikasi sebagai direktori persisten di dalam kontainer.

Prasyarat

  • Periksa dan upgrade komponen CSI: Pastikan versi komponen csi-plugin dan csi-provisioner tidak lebih lama dari v1.22.11-abbb810e-aliyun.

    Untuk upgrade, lihat Upgrade komponen CSI.
  • Komponen penyimpanan telah dikonfigurasi untuk mendukung pemasangan CPFS.

    Prosedur konfigurasi

    Metode konfigurasi bergantung pada versi csi-plugin Anda.

    csi-plugin 1.33 atau lebih baru

    Instal komponen cnfs-nas-daemon dan konfigurasikan csi-plugin untuk mengaktifkan FeatureGate AlinasMountProxy=true agar CSI selanjutnya memanggil cnfs-nas-daemon untuk pemasangan. Untuk instruksi lengkap, lihat Manage the cnfs-nas-daemon add-on.

    csi-plugin sebelum versi 1.33

    1. Konfigurasikan ConfigMap untuk mengaktifkan protokol NFS yang digunakan saat memasang CPFS General-purpose.

      cat << EOF | kubectl apply -f -
      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: csi-plugin
        namespace: kube-system
      data:
        cpfs-nas-enable: "true"
      EOF
    2. Restart csi-plugin untuk menginstal dependensi terkait.

      Operasi ini tidak memengaruhi operasi bisnis normal.

      kubectl -n kube-system rollout restart daemonset csi-plugin

      Output yang diharapkan:

      daemonset.apps/csi-plugin restarted
  • Sistem file CPFS General-purpose, layanan protokol, dan alamat mount yang dapat diakses oleh kluster ACK telah disiapkan.

    Jika belum dibuat, Buat sistem file CPFS General-purpose Edition di wilayah tempat kluster berada, gunakan VPC dan vSwitch yang sesuai dengan kluster untuk Buat layanan protokol, dan hasilkan titik mount.

    • Sistem file: Harus berada di wilayah yang didukung CPFS General-purpose, berlokasi di wilayah yang sama dengan kluster, dan menggunakan versi 2.3.0 atau lebih baru.

      Pada halaman File System List di Konsol NAS, klik sistem file CPFS target, lalu konfirmasi nomor versi CPFS pada halaman Basic Information.
    • Layanan protokol: CPFS tidak mendukung pemasangan lintas-VPC. VPC yang digunakan harus sama dengan kluster.

    • Dapatkan alamat mount layanan protokol (terdiri dari nama domain titik mount dan direktori ekspor). Jika direktori ekspor / ditentukan, alamat mount-nya adalah cpfs-****.<Region ID>.cpfs.aliyuncs.com:/share.

      Pada halaman Protocol Service, klik Export Directory, lalu salin dan simpan alamat mount pada kolom Mount address.
  • Anda telah memahami Batasan CPFS General-purpose.

Langkah 1: Buat PV

Buat PV di kluster untuk "mendaftarkan" sistem file CPFS yang sudah ada.

  1. Simpan konten berikut sebagai file cpfs-pv.yaml.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: cpfs-pv
      labels:  # Definisikan label untuk bind PVC selanjutnya
        alicloud-pvname: cpfs-pv
    spec:
      accessModes:  # Mode akses
      - ReadWriteMany
      capacity:
        storage: 20Gi  # Definisikan kapasitas total PV
      csi:
        driver: nasplugin.csi.alibabacloud.com  # Tetapkan ke nilai ini
        volumeAttributes:
          mountProtocol: cpfs-nfs   # Gunakan protokol NFS untuk pemasangan
          path: "/share"    # Direktori mount di alamat mount
          volumeAs: subpath    # Subdirektori
          server: "cpfs-******-******.cn-shanghai.cpfs.aliyuncs.com" # Nama domain titik mount di alamat mount
        volumeHandle: cpfs-pv  # Pengenal unik volume, harus konsisten dengan metadata.name       
      mountOptions:  # Opsi mount NFS
      - rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2,noresvport
      - vers=3

    Penjelasan parameter utama:

    Parameter

    Deskripsi

    accessModes

    Mode akses untuk PV.

    capacity.storage

    Kapasitas penyimpanan volume.

    csi.driver

    Tipe driver. Saat menggunakan CPFS General Purpose, nilai ini tetap nasplugin.csi.alibabacloud.com.

    csi.volumeAttributes.server

    Nama domain titik mount di alamat mount direktori ekspor layanan protokol CPFS General Purpose.

    csi.volumeAttributes.path

    Direktori mount di alamat mount direktori ekspor layanan protokol CPFS General Purpose, misalnya /share. Anda juga dapat mengaturnya ke subdirektori, misalnya /share/dir.

    csi.volumeAttributes.mountProtocol

    cpfs-nfs menunjukkan penggunaan protokol NFS untuk memasang CPFS.

    csi.volumeAttributes.volumeAs

    subpath menunjukkan pembuatan PV tipe subdirektori.

    csi.volumeHandle

    Harus konsisten dengan nama PV.

  2. Jalankan perintah berikut untuk membuat PV.

    kubectl apply -f cpfs-pv.yaml
  3. Lihat status PV.

    kubectl get pv cpfs-pv

    Output yang diharapkan:

    NAME      CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM   STORAGECLASS   REASON   AGE
    cpfs-pv   20Gi       RWX            Retain           Available                                   2s

Langkah 2: Buat PVC

Buat PVC untuk "meminta" penggunaan sumber daya penyimpanan yang telah didaftarkan pada langkah sebelumnya.

  1. Simpan konten berikut sebagai cpfs-pvc.yaml.

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: cpfs-pvc
    spec:
      accessModes:
      - ReadWriteMany  # Mode akses
      resources:
        requests: 
          storage: 20Gi  # Kapasitas penyimpanan yang diminta
      selector:  # 
        matchLabels:
          alicloud-pvname: cpfs-pv  # Bind ke PV yang telah dibuat sebelumnya

    Parameter PV

    Deskripsi

    accessModes

    Mode akses yang diminta PVC dari PV.

    selector

    Menggunakan label pada PV untuk pencocokan dan binding.

    resources.requests.storage

    Kapasitas penyimpanan yang dialokasikan ke Pod. Nilainya tidak boleh melebihi kapasitas PV.

  2. Buat PV dan PVC.

    kubectl apply -f cpfs-pvc.yaml
  3. Lihat status PVC untuk memastikan bahwa PVC telah berhasil terikat ke PV.

    kubectl get pvc cpfs-pvc

    Berikut contoh output-nya:

    NAME       STATUS   VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
    cpfs-pvc   Bound    cpfs-pv   20Gi       RWO                           <unset>                 18m

Langkah 3: Buat aplikasi dan pasang volume

Buat workload aplikasi dan deklarasikan penggunaan PVC yang telah dibuat sebelumnya dalam konfigurasinya.

  1. Simpan konten berikut sebagai cpfs-test.yaml.

    apiVersion: apps/v1
    kind: StatefulSet
    metadata:
      name: cpfs-sts
    spec:
      selector:
        matchLabels:
          app: nginx
      serviceName: "nginx"
      replicas: 2
      template:
        metadata:
          labels:
            app: nginx
        spec:
          containers:
          - name: nginx
            image: anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6
            volumeMounts:
            - name: cpfs-pvc
              mountPath: /data
          volumes:
          - name: cpfs-pvc
            persistentVolumeClaim:
              claimName: cpfs-pvc
  2. Buat StatefulSet.

    kubectl apply -f cpfs-test.yaml
  3. Lihat status Pod.

    kubectl get pods -l app=nginx

    Output yang diharapkan:

    NAME         READY   STATUS    RESTARTS   AGE
    cpfs-sts-0   1/1     Running   0          58s
    cpfs-sts-1   1/1     Running   0          50s
  4. Periksa titik mount di dalam kontainer untuk memastikan CPFS telah berhasil dipasang.

    kubectl exec cpfs-sts-0 -- mount | grep /data

    Output yang diharapkan berikut menunjukkan bahwa volume statis CPFS General-purpose telah berhasil dipasang.

    cpfs-******-******.cn-shanghai.cpfs.aliyuncs.com:/share on /data type nfs (rw,relatime,vers=3,rsize=1048576,wsize=1048576,namlen=255,hard,nolock,noresvport,proto=tcp,port=30000,timeo=600,retrans=2,sec=sys,mountaddr=127.0.1.255,mountvers=3,mountport=30000,mountproto=tcp,local_lock=all,addr=127.0.1.255)

Verifikasi penyimpanan bersama dan penyimpanan persisten

Setelah aplikasi berhasil dideploy, Anda dapat memverifikasi apakah volume penyimpanan berfungsi sesuai harapan.

Penyimpanan bersama

Buat file di satu Pod, lalu lihat di Pod lain untuk memverifikasi penyimpanan data bersama.

  1. Lihat informasi Pod untuk mendapatkan nama Pod.

    kubectl get pod -l app=nginx

    Output yang diharapkan:

    NAME         READY   STATUS    RESTARTS   AGE
    cpfs-sts-0   1/1     Running   0          10s
    cpfs-sts-1   1/1     Running   0          5s
  2. Buat file di salah satu Pod.

    Berikut menggunakan Pod bernama cpfs-sts-0 sebagai contoh:

    kubectl exec cpfs-sts-0 -- touch /data/test.txt
  3. Periksa apakah file tersebut ada di Pod lain.

    Berikut menggunakan Pod bernama cpfs-sts-1 sebagai contoh.

    kubectl exec cpfs-sts-1 -- ls /data

    Output yang diharapkan:

    test.txt

    File yang sebelumnya dibuat terlihat, menunjukkan bahwa data dapat dibagikan di antara beberapa Pod.

Penyimpanan persisten

Rebuild Deployment dan periksa apakah data dalam sistem file masih ada di Pod baru untuk memverifikasi penyimpanan persisten data.

  1. Hapus Pod aplikasi untuk memicu rebuild.

    kubectl rollout restart sts cpfs-sts
  2. Lihat Pod dan tunggu hingga Pod baru mulai dan masuk ke status Running.

    kubectl get pod -l app=nginx

    Output yang diharapkan:

    NAME         READY   STATUS    RESTARTS   AGE
    cpfs-sts-0   1/1     Running   0          1s
    cpfs-sts-1   1/1     Running   0          10s
  3. Periksa apakah file yang sebelumnya dibuat masih ada di Pod baru.

    Berikut menggunakan Pod bernama cpfs-sts-0 sebagai contoh.

    kubectl exec cpfs-sts-0 -- ls /data

    Output yang diharapkan:

    test.txt

    File yang sebelumnya ditulis terlihat, menunjukkan bahwa data disimpan secara persisten.

Rekomendasi untuk lingkungan produksi

  • Tuning performa: CPFS cocok untuk skenario throughput tinggi dan IOPS tinggi. Anda dapat menyesuaikan opsi mount NFS di mountOptions PV (seperti rsize dan wsize) untuk mengoptimalkan performa dan memenuhi kebutuhan workload tertentu.

  • Konsistensi data: Sebagai penyimpanan bersama, CPFS tidak menjamin konsistensi data ketika beberapa Pod menulis secara konkuren ke file yang sama. Untuk menghindari korupsi file, Anda perlu menerapkan kunci terdistribusi di lapisan aplikasi atau menggunakan mode penulisan append-only.

  • Manajemen volume penyimpanan: Pendekatan volume penyimpanan statis memerlukan manajemen PV secara manual. Untuk skenario yang memerlukan pembuatan dan isolasi volume penyimpanan secara otomatis untuk beberapa aplikasi, kami merekomendasikan penggunaan CNFS untuk mengelola volume penyimpanan dinamis CPFS. Untuk informasi lebih lanjut, lihat Manage General-purpose CPFS dynamic volumes.