All Products
Search
Document Center

Container Service for Kubernetes:Gunakan volume NAS statis

Last Updated:Mar 25, 2026

Volume NAS menyediakan penyimpanan persisten yang memastikan data tidak hilang saat Pod direplikasi ulang, serta penyimpanan bersama yang memungkinkan beberapa Pod membaca dan menulis data secara bersamaan. ACK mendukung pemasangan sistem file NAS yang sudah ada ke workload Anda sebagai volume statis.

  • Volume statis mengharuskan Anda terlebih dahulu membuat Persistent Volume (PV) untuk merepresentasikan sumber daya penyimpanan yang sudah ada, seperti sistem file NAS. Aplikasi Anda kemudian membuat Persistent Volume Claim (PVC) untuk mencocokkan dan menggunakan PV tersebut. Metode ini ideal untuk mengelola sumber daya penyimpanan yang sudah ada. Namun, PVC yang terikat tidak mendukung pengubahan ukuran online secara default.

    Jika Anda memerlukan pengubahan ukuran volume secara otomatis, lihat Gunakan volume NAS dinamis atau Gunakan CNFS untuk mengubah ukuran volume NAS secara otomatis.
  • Volume dinamis tidak memerlukan PV yang telah dibuat sebelumnya. Saat aplikasi Anda membuat PVC yang menentukan StorageClass, sistem akan secara otomatis menyediakan volume penyimpanan baru beserta PV-nya sesuai permintaan. Pendekatan ini lebih fleksibel dan mendukung pengubahan ukuran volume.

Cara kerja

Diagram berikut menunjukkan proses pemasangan volume NAS statis di kluster ACK.

image
  1. Buat PV: Daftarkan sistem file NAS yang sudah ada ke kluster dengan mendeklarasikan alamat titik pemasangan (direktori root atau subdirektori tertentu), kapasitas, dan mode akses.

  2. Buat PVC: Aplikasi membuat PVC untuk meminta penyimpanan. PVC secara otomatis terikat ke PV yang sesuai.

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

Prasyarat

  • Komponen csi-plugin dan csi-provisioner telah diinstal.

    Komponen Container Storage Interface (CSI) diinstal secara default. Pastikan Anda tidak meng-uninstall-nya secara manual. Anda dapat memeriksa status instalasinya di halaman Add-ons. Kami merekomendasikan meningkatkan komponen CSI ke versi terbaru.
  • Anda memiliki sistem file NAS yang sudah ada dan memenuhi kondisi berikut. Jika belum, buat sistem file baru atau gunakan volume NAS dinamis.

    NAS memiliki beberapa batasan terkait konektivitas pemasangan, jumlah sistem file, dan jenis protokol.
    • Protocol Type: Hanya NFS yang didukung.

    • VPC: Sistem file NAS harus berada di VPC yang sama dengan kluster. NAS mendukung pemasangan lintas zona ketersediaan, tetapi tidak mendukung pemasangan lintas VPC.

    • Mount Target: Tambahkan titik pemasangan yang berada di VPC yang sama dengan kluster dan dalam status tersedia. Untuk informasi selengkapnya, lihat Kelola titik pemasangan. Catat alamat titik pemasangan tersebut.

    • (Opsional) Encryption Type: Jika Anda perlu mengenkripsi data volume penyimpanan, konfigurasikan jenis enkripsi saat membuat sistem file NAS.

Catatan penggunaan

Langkah 1: Buat PV

Buat PV untuk mendaftarkan sistem file NAS yang sudah ada ke kluster Anda.

Kubectl

  1. Buat file bernama pv-nas.yaml dengan konten berikut.

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      # Nama PV. Harus unik dalam kluster.
      name: pv-nas  
      # Label untuk PV, digunakan untuk mencocokkan dengan PVC nanti.
      labels:  
        alicloud-pvname: pv-nas
    spec:
      capacity:
        # Deklarasi kapasitas ini hanya sebagai identifikasi. Kapasitas aktual ditentukan oleh sistem file NAS.
        storage: 5Gi  
      accessModes:
        - ReadWriteMany
      # Kebijakan reclaim untuk PV.
      persistentVolumeReclaimPolicy: Retain
      csi:
        # Jenis driver. Nilai ini tetap saat menggunakan volume NAS.
        driver: nasplugin.csi.alibabacloud.com  
        # Harus identik dengan metadata.name.
        volumeHandle: pv-nas   
        volumeAttributes:
          server: "0c47****-mpk25.cn-shenzhen.nas.aliyuncs.com"  # Ganti dengan alamat titik pemasangan NAS Anda.
          # Subdirektori NAS yang akan dipasang. Direktori ini akan dibuat otomatis jika belum ada.
          path: "/csi"
      mountOptions:
      - nolock,tcp,noresvport
      - vers=3

    Parameter

    Deskripsi

    storage

    Deklarasi kapasitas untuk PV. Nilai ini digunakan untuk mencocokkan dengan PVC dan tidak membatasi kapasitas aktual yang tersedia. Kapasitas maksimum yang tersedia untuk aplikasi Anda adalah total kapasitas sistem file NAS.

    Batas kapasitas aktual NAS ditentukan oleh spesifikasinya. Untuk informasi selengkapnya, lihat General-purpose NAS dan Extreme NAS.

    accessModes

    Menentukan mode akses. Nilai yang valid meliputi:

    • ReadWriteMany (Default): Volume dapat dipasang sebagai read-write oleh banyak node.

    • ReadWriteOnce: Volume dapat dipasang sebagai read-write oleh satu node.

    • ReadOnlyMany: Volume dapat dipasang sebagai read-only oleh banyak node.

    persistentVolumeReclaimPolicy

    Kebijakan reclaim untuk PV, yang menentukan apa yang terjadi pada PV dan data NAS backend setelah PVC dihapus.

    • Retain (Direkomendasikan): Setelah PVC dihapus, PV masuk ke status Released. Data NAS backend sepenuhnya dipertahankan dan harus dihapus secara manual.

    • Delete: Jika Anda menghapus PVC, PV yang sesuai juga dihapus. Kebijakan ini harus digunakan dengan parameter archiveOnDelete. PV statis tidak mendukung archiveOnDelete. Oleh karena itu, untuk PV statis, meskipun kebijakan ini diatur ke Delete, PV dan file NAS tidak benar-benar dihapus saat Anda menghapus PVC.

      Untuk mengonfigurasi archiveOnDelete, lihat Gunakan volume NAS dinamis.

    driver

    Jenis driver. Ini tetap menjadi nasplugin.csi.alibabacloud.com saat menggunakan komponen Alibaba Cloud NAS CSI.

    volumeHandle

    Identifikasi unik untuk PV di sistem penyimpanan backend. Nilai ini harus identik dengan nama PV (nilai metadata.name). Jika Anda menggunakan beberapa PV, nilai ini harus unik untuk setiap PV.

    server

    Alamat titik pemasangan NAS.

    Untuk menemukan alamat titik pemasangan, lihat Kelola titik pemasangan.

    path

    Subdirektori NAS yang akan dipasang. Jika tidak ditentukan, direktori root dipasang secara default.

    Jika direktori tersebut tidak ada di sistem file NAS, sistem akan membuatnya secara otomatis sebelum pemasangan.
    • General-purpose NAS: Direktori root adalah /.

    • Extreme NAS: Direktori root adalah /share. Saat memasang subdirektori, path harus dimulai dengan /share (misalnya, /share/data).

    mountOptions

  2. Buat PV.

    kubectl create -f pv-nas.yaml
  3. Periksa status dan properti PV.

    kubectl get pv

    Output yang diharapkan:

    NAME     CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS      CLAIM    STORAGECLASS     VOLUMEATTRIBUTESCLASS   REASON   AGE
    pv-nas   5Gi        RWX            Retain           Available                             <unset>                          25s

    Output menunjukkan bahwa PV berhasil dibuat dengan kapasitas 5 GiB dan berada dalam status Available, artinya PV tersebut belum diklaim oleh PVC.

Konsol

  1. Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.

  2. Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Volumes > Persistent Volumes.

  3. Di halaman Persistent Volumes, klik Create. Di kotak dialog yang muncul, konfigurasikan parameter dan klik Create.

    Parameter

    Deskripsi

    PV Type

    Pilih NAS.

    Volume Name:

    Nama PV. Nama harus unik dalam kluster.

    Capacity

    Deklarasi kapasitas untuk PV. Nilai ini digunakan untuk mencocokkan dengan PVC dan tidak membatasi kapasitas aktual yang tersedia. Kapasitas maksimum yang tersedia untuk aplikasi Anda adalah total kapasitas sistem file NAS.

    Batas kapasitas aktual NAS ditentukan oleh spesifikasinya. Untuk informasi selengkapnya, lihat General-purpose NAS dan Extreme NAS.

    Access Mode

    Menentukan mode akses. Nilai yang valid meliputi:

    • ReadWriteMany: Volume dapat dipasang sebagai read-write oleh banyak node.

    • ReadWriteOnce: Volume dapat dipasang sebagai read-write oleh satu node.

    Use CNFS

    Menentukan apakah akan menggunakan CNFS, yang menyediakan kemampuan tambahan seperti O&M otomatis, akselerasi cache, dan pemantauan kinerja.

    Untuk mengelola sistem file NAS yang sudah ada dengan CNFS, lihat Buat sistem file NAS yang dikelola CNFS (Direkomendasikan).

    Mount Target Domain Name:

    Parameter ini dapat dikonfigurasi hanya saat CNFS dinonaktifkan.

    Alamat titik pemasangan NAS.

    Untuk mendapatkan alamat tersebut, lihat Kelola titik pemasangan.
    • Select Mount Target: Pilih alamat titik pemasangan yang sebelumnya telah Anda tambahkan.

    • Custom: Gunakan nama domain kustom sebagai alamat pemasangan. Pastikan Anda telah mengonfigurasi resolusi DNS dari nama domain kustom ke titik pemasangan NAS target.

    Advanced Options (Optional)

    Mount Path

    Subdirektori NAS yang akan dipasang. Jika tidak ditentukan, direktori root dipasang secara default.

    Jika direktori tersebut tidak ada di sistem file NAS, sistem akan membuatnya secara otomatis sebelum pemasangan.
    • General-purpose NAS: Direktori root adalah /.

    • Extreme NAS: Direktori root adalah /share. Saat memasang subdirektori, path harus dimulai dengan /share (misalnya, /share/data).

    Reclaim Policy

    • Retain (Default): Saat PVC dihapus, PV masuk ke status 'Released', tetapi data NAS backend dipertahankan. Anda harus membersihkan objek PV dan datanya secara manual.

    • Delete: Saat PVC dihapus, PV yang sesuai juga dihapus. Kebijakan ini harus digunakan dengan archiveOnDelete. Namun, PV statis tidak mendukung archiveOnDelete. Oleh karena itu, untuk PV statis, meskipun kebijakan diatur ke Delete, menghapus PVC tidak benar-benar menghapus PV atau file NAS.

      Untuk mengonfigurasi archiveOnDelete, lihat Gunakan volume NAS dinamis.

    Mount Options

    Label

    Label untuk PV.

    Setelah pembuatan selesai, Anda dapat melihat PV yang baru dibuat di halaman Persistent Volumes.

Langkah 2: Buat PVC

Buat PVC untuk mengklaim penyimpanan dari PV.

Kubectl

  1. Buat file bernama pvc-nas.yaml untuk mengikat PV yang telah Anda buat.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: pvc-nas  # Nama PVC. Harus unik dalam namespace.
    spec:
      accessModes:
        - ReadWriteMany
      resources:
        requests:
          storage: 5Gi
      selector:
        matchLabels:
          alicloud-pvname: pv-nas   # Cocokkan secara tepat dengan PV yang dibuat sebelumnya menggunakan label.

    Parameter

    Deskripsi

    accessModes

    Mode akses. Nilai yang valid meliputi:

    • ReadWriteMany (Default): Volume dapat dipasang sebagai read-write oleh banyak node.

    • ReadWriteOnce: Volume dapat dipasang sebagai read-write oleh satu node.

    • ReadOnlyMany: Volume dapat dipasang sebagai read-only oleh banyak node.

    storage

    Kapasitas penyimpanan yang diminta. Nilai ini digunakan untuk mencocokkan dengan PV dan tidak membatasi kapasitas aktual.

    Batas kapasitas aktual NAS ditentukan oleh spesifikasinya. Untuk informasi selengkapnya, lihat General-purpose NAS dan Extreme NAS.

    matchLabels

    Menentukan pemilih label untuk mengikat ke PV tertentu. Nilai ini harus cocok dengan label yang ditetapkan pada PV.

  2. Buat PVC.

    kubectl create -f pvc-nas.yaml
  3. Periksa status PVC.

    kubectl get pvc

    Output yang diharapkan:

    NAME       STATUS   VOLUME    CAPACITY   ACCESS MODES   STORAGECLASS   VOLUMEATTRIBUTESCLASS   AGE
    pvc-nas    Bound    pv-nas    5Gi        RWX                           <unset>                 5s

    Output menunjukkan bahwa PVC berhasil mengklaim penyimpanan 5 GiB dan berada dalam status Bound, terikat ke PV pv-nas. PVC siap dipasang dan digunakan oleh aplikasi.

Konsol

  1. Di panel navigasi kiri halaman manajemen kluster, pilih Storage > PVCs.

  2. Di halaman Persistent Volume Claims, klik Create dan konfigurasikan PVC sesuai petunjuk.

    Parameter

    Deskripsi

    PVC Type

    Pilih NAS.

    Name

    Nama PVC. Nama harus unik dalam namespace.

    Allocation Mode

    Pilih Existing Volume.

    Topik ini menggunakan PV yang dibuat sebelumnya. Jika Anda belum membuat PV, Anda dapat memilih Allocation Mode sebagai Allocation Mode.

    Existing Volumes

    Pilih PV yang telah Anda buat sebelumnya.

    Capacity

    Kapasitas penyimpanan yang diminta. Nilai ini digunakan untuk mencocokkan dengan PV dan tidak membatasi kapasitas aktual.

    Batas kapasitas aktual NAS ditentukan oleh spesifikasinya. Untuk informasi selengkapnya, lihat General-purpose NAS dan Extreme NAS.

    Access Mode

    Mode akses. Nilai yang valid meliputi:

    • ReadWriteMany (Default): Volume dapat dipasang sebagai read-write oleh banyak node.

    • ReadWriteOnce: Volume dapat dipasang sebagai read-write oleh satu node.

    • ReadOnlyMany: Volume dapat dipasang sebagai read-only oleh banyak node.

Langkah 3: Buat aplikasi dan pasang volume

Setelah membuat PVC, Anda dapat membuat aplikasi yang menggunakannya untuk memasang volume NAS.

Kubectl

  1. Buat file bernama deploy.yaml yang mereferensikan PVC yang telah Anda buat.

    Aplikasi ini membuat dua Pod yang memasang sistem file NAS yang sama, sehingga memungkinkan Anda memverifikasi penyimpanan bersama nanti.

    YAML

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nas-test
      labels:
        app: nginx
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: nginx
      template:
        metadata:
          labels:
            app: nginx
        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-nas
                # Jalur tempat volume NAS dipasang di dalam kontainer.
                mountPath: "/data"  
          volumes:
            # PVC yang akan digunakan.
            - name: pvc-nas  
              persistentVolumeClaim:
                claimName: pvc-nas
  2. Buat Deployment.

    kubectl create -f deploy.yaml
  3. Periksa status deployment Pod aplikasi.

    kubectl get pod -l app=nginx

    Output yang diharapkan:

    NAME                  READY   STATUS    RESTARTS   AGE
    nas-test-****-***a    1/1     Running   0          32s
    nas-test-****-***b    1/1     Running   0          32s

Konsol

  1. Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik Workloads > Deployments.

  2. Di halaman Deployments, klik Create from Image dan konfigurasikan aplikasi sesuai petunjuk.

    Tabel berikut menjelaskan parameter utama. Anda dapat menggunakan nilai default untuk parameter lainnya. Untuk informasi selengkapnya, lihat Buat Deployment.

    Bagian

    Parameter

    Deskripsi

    Basic Information

    Name:

    Nama Deployment.

    Replicas:

    Jumlah replika Pod untuk Deployment.

    Beberapa replika memasang sistem file NAS yang sama, sehingga memungkinkan Anda memverifikasi penyimpanan bersama nanti.

    Container

    Image Name

    Alamat gambar aplikasi.

    Required Resources

    Sumber daya vCPU dan memori yang diperlukan.

    Volume

    Klik Add PVC dan konfigurasikan parameter.

    • Mount Source: PVC yang sebelumnya telah Anda buat.

    • Container Path: Jalur di dalam kontainer tempat sistem file NAS akan dipasang, misalnya /data.

    Setelah deployment, klik nama aplikasi di halaman Stateless, lalu di tab Pods, verifikasi bahwa status Pod adalah Running.

Verifikasi penyimpanan bersama dan persisten

Setelah menerapkan aplikasi, Anda dapat memverifikasi bahwa volume berfungsi sesuai harapan.

Penyimpanan bersama

Penyimpanan persisten

Buat file di satu Pod dan periksa keberadaannya di Pod lain untuk memverifikasi berbagi data.

  1. Dapatkan nama Pod.

    kubectl get pod | grep nas-test

    Output yang diharapkan:

    nas-test-*****a   1/1     Running   0          40s
    nas-test-*****b   1/1     Running   0          40s
  2. Buat file di salah satu Pod.

    Contoh ini menggunakan Pod bernama nas-test-*****a:

    kubectl exec nas-test-*****a -- touch /data/test.txt
  3. Periksa apakah file tersebut ada di Pod lain.

    Contoh ini menggunakan Pod bernama nas-test-*****b:

    kubectl exec nas-test-*****b -- ls /data

    Output yang diharapkan:

    test.txt

    File tersebut terlihat, yang mengonfirmasi bahwa data dapat dibagikan antar Pod.

Lakukan restart bergulir Pod Deployment dan periksa data di Pod baru untuk memverifikasi persistensi data.

  1. Picu restart bergulir Pod aplikasi.

    kubectl rollout restart deploy nas-test
  2. Periksa Pod dan tunggu hingga Pod baru mulai dan masuk ke status Running.

    kubectl get pod | grep nas-test

    Output yang diharapkan:

    nas-test-*****c   1/1     Running   0          67s
    nas-test-*****d   1/1     Running   0          49s
  3. Periksa apakah file yang sebelumnya dibuat masih ada di salah satu Pod baru.

    Contoh ini menggunakan Pod bernama nas-test-*****c:

    kubectl exec nas-test-*****c -- ls /data

    Output yang diharapkan:

    test.txt

    File tersebut masih ada, yang mengonfirmasi bahwa data disimpan secara persisten.

Pertimbangan produksi

  • Keamanan dan pengelolaan izin

    • Kontrol akses dengan grup izin: NAS menggunakan grup izin untuk mengelola akses jaringan. Ikuti prinsip hak istimewa minimal dengan hanya menambahkan alamat IP pribadi node kluster Anda atau blok CIDR vSwitch-nya. Hindari otorisasi yang terlalu luas seperti 0.0.0.0/0.

  • Optimasi kinerja dan biaya

    • Pilih jenis NAS yang tepat: Lihat Pilih jenis sistem file untuk memilih jenis NAS berdasarkan kebutuhan IOPS dan throughput aplikasi Anda.

    • Optimalkan opsi pemasangan (mountOptions): Sesuaikan parameter pemasangan NFS berdasarkan karakteristik workload Anda. Misalnya, menggunakan versi protokol seperti vers=4.0 atau vers=4.1 dapat memberikan kinerja dan kemampuan penguncian file yang lebih baik dalam beberapa skenario. Untuk I/O file skala besar, Anda dapat mencoba menyesuaikan parameter rsize dan wsize untuk mengoptimalkan kinerja baca dan tulis.

  • Operasi dan keandalan

    • Konfigurasikan pemeriksaan kesehatan: Konfigurasikan liveness probe untuk Pod aplikasi Anda guna memeriksa apakah titik pemasangan berfungsi dengan benar. Jika pemasangan gagal, Kubernetes dapat secara otomatis merestart Pod, yang memicu pemasangan ulang volume.

    • Pemantauan dan peringatan: Gunakan Pemantauan Penyimpanan Kontainer untuk mengonfigurasi peringatan yang dapat membantu Anda mendeteksi anomali volume atau bottleneck kinerja secara cepat.

    • Gunakan kebijakan reclaim Retain: Untuk data produksi, atur persistentVolumeReclaimPolicy PV ke Retain. Hal ini mencegah kehilangan data secara tidak sengaja di sistem file NAS backend jika Anda secara tidak sengaja menghapus PVC.

Bersihkan sumber daya

Untuk menghindari biaya tak terduga, lepaskan sumber daya dalam urutan berikut saat Anda tidak lagi memerlukan volume NAS.

  1. Hapus workload

    • Aksi: Hapus semua aplikasi (seperti Deployment atau StatefulSet) yang menggunakan volume NAS. Tindakan ini melepas pemasangan volume dari Pod aplikasi.

    • Perintah contoh: kubectl delete deployment <nama-deployment-anda>

  2. Hapus PVC

    • Aksi: Hapus PVC yang terkait dengan aplikasi. Perilaku PV yang terikat selanjutnya bergantung pada persistentVolumeReclaimPolicy PV.

    • Perilaku kebijakan reclaim:

      • Retain (Direkomendasikan): Setelah PVC dihapus, PV yang terikat masuk ke status Released. Baik objek PV maupun data NAS backend sepenuhnya dipertahankan dan harus dihapus secara manual.

      • Delete: Setelah PVC dihapus, objek PV yang sesuai juga dihapus. Perhatikan hal berikut:

        • Jika PV mengarah ke direktori root NAS, data NAS backend dipertahankan untuk mencegah penghapusan tidak sengaja.

        • Jika volumeHandle PV statis merupakan akhiran dari nilai path (misalnya, volumeHandle adalah app dan path adalah /exports/app), menghapus PVC akan memicu penghapusan otomatis subdirektori NAS backend. Gunakan pengaturan ini dengan hati-hati.

    • Perintah contoh: kubectl delete pvc <nama-pvc-anda>

  3. Hapus PV

    • Aksi: Anda dapat menghapus PV saat berada dalam status Available atau Released. Tindakan ini hanya menghapus definisi PV dari kluster Kubernetes dan tidak menghapus data di sistem file NAS backend.

    • Perintah contoh: kubectl delete pv <nama-pv-anda>

  4. Hapus sistem file NAS backend (Opsional)

    • Aksi: Lihat Hapus sistem file. Tindakan ini menghapus permanen semua data di sistem file NAS dan tidak dapat dikembalikan. Lakukan dengan sangat hati-hati. Sebelum melakukan tindakan ini, pastikan tidak ada layanan yang bergantung pada sistem file NAS tersebut.

Referensi