全部产品
Search
文档中心

Container Service for Kubernetes:Gunakan volume NAS yang diprovisikan secara dinamis

更新时间:Jan 09, 2026

Volume Penyimpanan File NAS ideal untuk skenario seperti analitik data besar, berbagi data, aplikasi web, dan persistensi log. Selain menggunakan volume persisten statis, Anda dapat membuat klaim volume persisten (PVC) dan mengonfigurasi StorageClass untuk mengalokasikan resource penyimpanan secara dinamis. Pendekatan ini memungkinkan sistem menyediakan volume persisten (PV) secara otomatis, sehingga menghilangkan kebutuhan untuk membuat dan mengonfigurasi resource penyimpanan secara manual terlebih dahulu. Volume NAS yang diprovisikan secara dinamis dapat dipasang menggunakan metode subpath, sharepath, atau filesystem.

Prasyarat

  • Komponen CSI diinstal di kluster secara default. Untuk meningkatkan komponen tersebut, lihat Upgrade CSI components.

    Catatan

    FlexVolume telah ditinggalkan. Jika kluster Anda menggunakan komponen FlexVolume, Anda harus melakukan migrasi dari FlexVolume ke CSI sebelum memasang volume. Untuk informasi selengkapnya, lihat Migrate from FlexVolume to CSI. Anda dapat memeriksa jenis komponen penyimpanan pada tab Storage di halaman Operations Management > Component Management.

  • Layanan File Storage NAS telah diaktifkan.

    Jika Anda menggunakan File Storage NAS untuk pertama kalinya, ikuti petunjuk di layar pada File Storage NAS product page untuk mengaktifkan layanan tersebut.

Batasan

  • Pemasangan sistem file NAS yang menggunakan protokol SMB tidak didukung.

  • Sistem file NAS hanya dapat dipasang ke Pod dalam VPC yang sama. Pemasangan lintas-VPC tidak didukung.

    Catatan

    Dalam VPC yang sama, volume NAS dapat dipasang lintas zona.

  • Sistem file NAS tujuan umum dan Ekstrem memiliki batasan berbeda terkait konektivitas, jumlah sistem file, dan jenis protokol. Untuk informasi selengkapnya, lihat Limits.

Catatan penggunaan

Metode pemasangan

Parameter volumeAs dalam StorageClass menentukan hubungan antara PV dan sistem file NAS atau subdirektorinya. Anda dapat memilih metode pemasangan sesuai kebutuhan.

Metode pemasangan

Deskripsi

Kasus penggunaan

Mount using the subpath method

Membuat PV bertipe subdirektori, di mana setiap PV berkorespondensi dengan subdirektori unik dalam sistem file NAS yang sama.

  • Beberapa Pod memasang subdirektori yang sama dari sistem file NAS.

  • Beberapa Pod memasang subdirektori berbeda dari sistem file NAS yang sama.

Mount using the sharepath method

Membuat PV yang semuanya mengarah ke direktori bersama yang ditentukan dalam StorageClass. Tidak ada subdirektori baru yang dibuat per PV.

Beberapa Pod di namespace berbeda perlu memasang subdirektori NAS yang sama.

Mount using the filesystem method (Tidak disarankan)

Otomatis membuat sistem file NAS untuk setiap PV. Satu PV berkorespondensi dengan satu sistem file NAS utuh.

Sistem file NAS terpisah digunakan, yang dibuat dan dihapus secara dinamis bersama titik pemasangannya.

Mount using the subpath method

Penting

Metode subpath memerlukan versi komponen CSI 1.31.4 atau yang lebih baru. Untuk meningkatkan komponen tersebut, lihat Upgrade CSI components.

Langkah 1: Dapatkan informasi sistem file NAS dan titik pemasangan

  1. Login ke NAS console. Di panel navigasi sebelah kiri, pilih File System > File System List.

  2. Buat sistem file NAS dan titik pemasangan.

    Hanya sistem file NAS yang menggunakan protokol NFS yang dapat dipasang. Titik pemasangan dan node kluster harus berada dalam VPC yang sama.

    • Jika Anda memiliki sistem file NAS yang sudah ada, pastikan sistem tersebut memenuhi persyaratan.

    • Jika Anda belum memiliki sistem file NAS yang tersedia, buat sistem file NAS dan titik pemasangan yang memenuhi persyaratan. Untuk informasi selengkapnya, lihat Create a file system dan Manage mount targets.

  3. Dapatkan informasi titik pemasangan.

    1. Klik ID sistem file. Di panel navigasi sebelah kiri, klik Mount and Use.

    2. Pada bagian Mount Target, pastikan status titik pemasangan adalah Available, lalu dapatkan alamat titik pemasangan tersebut.

Langkah 2: Buat StorageClass

kubectl

  1. Ubah konten YAML berikut dan simpan sebagai alicloud-nas-subpath.yaml.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-nas-subpath
    mountOptions:
    - nolock,tcp,noresvport
    - vers=3
    parameters:
      volumeAs: subpath
      server: "0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/k8s"
      archiveOnDelete: "true"
    provisioner: nasplugin.csi.alibabacloud.com
    reclaimPolicy: Retain
    allowVolumeExpansion: true

    Parameter

    Deskripsi

    mountOptions

    Opsi pemasangan untuk volume NAS, termasuk versi protokol NFS. Secara default, protokol NFSv3 digunakan untuk pemasangan. Anda dapat menentukan versi protokol, misalnya vers=4.0. Untuk informasi selengkapnya tentang protokol NFS yang didukung oleh berbagai jenis NAS, lihat NFS protocol.

    parameters

    volumeAs

    Metode pemasangan. Dalam contoh ini, nilainya diatur ke subpath untuk membuat PV bertipe subdirektori. Satu PV berkorespondensi dengan satu subdirektori dalam sistem file NAS.

    server

    Alamat titik pemasangan dan subdirektori sistem file NAS yang akan dipasang. Formatnya adalah <NAS mount target address>:<mount directory>. Jika Anda tidak menentukan subdirektori, direktori root / dipasang secara default.

    archiveOnDelete

    Menentukan apakah data penyimpanan backend dihapus ketika reclaimPolicy diatur ke Delete. Parameter ini ditambahkan sebagai konfirmasi karena NAS merupakan layanan penyimpanan bersama.

    • true (default): Direktori atau file dipertahankan dan diganti namanya menjadi archived-{pvName}.{timestamp}.

    • false: Resource penyimpanan backend dihapus secara permanen.

    Catatan

    provisioner

    Jenis driver. Nilainya harus diatur ke nasplugin.csi.alibabacloud.com, yang menunjukkan bahwa plugin Alibaba Cloud NAS CSI digunakan.

    reclaimPolicy

    Kebijakan reclaim PV. Nilai default adalah Delete. Retain juga didukung.

    • Delete: Nilai ini harus digunakan bersama archiveOnDelete.

      • Ketika archiveOnDelete bernilai true, file dalam sistem file NAS diganti nama tetapi tidak dihapus saat PVC dihapus.

      • Ketika archiveOnDelete bernilai false, file dalam sistem file NAS dihapus saat PVC dihapus.

        Penting

        Direktori subpath dan file-file di dalamnya dalam sistem file NAS akan dihapus. Sistem file NAS itu sendiri tetap dipertahankan. Untuk menghapus sistem file NAS, lihat Delete a file system.

    • Retain: Saat PVC dihapus, PV dan file dalam sistem file NAS dipertahankan. Anda harus menghapusnya secara manual.

    Jika keamanan data menjadi prioritas tinggi, kami menyarankan Anda mengatur parameter ini ke Retain untuk mencegah kehilangan data secara tidak sengaja.

    allowVolumeExpansion

    Parameter ini hanya didukung untuk sistem file NAS tujuan umum. Jika Anda mengaktifkan parameter ini, kuota direktori dikonfigurasi untuk PV yang dibuat secara dinamis oleh StorageClass guna membatasi kapasitas yang tersedia. Anda juga dapat memperbarui PVC untuk memperluas kapasitas volume. Untuk informasi selengkapnya, lihat Set directory quotas for dynamically provisioned NAS volumes.

    Catatan

    Kuota NAS berlaku secara asinkron. Setelah PV dibuat secara dinamis, kuota direktori mungkin tidak langsung berlaku. Jika Anda menulis data dalam jumlah besar dalam waktu singkat, penggunaan penyimpanan mungkin melebihi batas kapasitas. Untuk informasi selengkapnya tentang kuota direktori NAS, lihat Directory quotas.

  2. Buat StorageClass.

    kubectl create -f alicloud-nas-subpath.yaml

Console

  1. Login ke ACK console. Di panel navigasi kiri, klik Clusters.

  2. Pada halaman StorageClasses, klik Create.

  3. Pada dialog Create, konfigurasi parameter StorageClass dan klik Create.

    Berikut adalah item konfigurasi utama.

    Item konfigurasi

    Deskripsi

    Nilai contoh

    Name

    Nama StorageClass. Untuk informasi selengkapnya tentang persyaratan format, lihat petunjuk di konsol.

    alicloud-nas-subpath

    Persistent Volume Type

    Pilih NAS.

    NAS

    Select Mount Target

    Alamat titik pemasangan sistem file NAS.

    0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com

    Volume Mode

    Mode akses volume. Dalam contoh ini, pilih Subdirectory untuk menggunakan metode subpath. Subdirektori unik secara otomatis dibuat di bawah path pemasangan untuk setiap PV. Data disimpan di <NAS mount target>:<mount path>/<pv-name>/.

    Catatan

    Mode Subdirectory memerlukan versi komponen CSI 1.31.4 atau yang lebih baru. Jika tidak, sistem secara default menggunakan mode Shared Directory.

    Subdirectory

    Mount Path

    Subdirektori pada sistem file NAS yang akan dipasang.

    • Jika tidak diatur, direktori root dipasang secara default.

    • Jika direktori yang ditentukan tidak ada, direktori tersebut akan dibuat secara otomatis lalu dipasang.

    Catatan

    Direktori root adalah / untuk sistem file NAS tujuan umum dan /share untuk sistem file NAS Ekstrem. Saat Anda memasang subdirektori pada sistem file NAS Ekstrem, path harus dimulai dengan /share, seperti /share/data.

    /k8s

    Reclaim Policy

    Kebijakan reclaim untuk PV. Kami menyarankan Anda memilih Retain untuk mencegah kehilangan data secara tidak sengaja.

    • Delete: Parameter ini harus dikonfigurasi dengan archiveOnDelete. Di konsol, memilih Delete tidak berlaku. Artinya, PV dan data pada volume NAS tidak dihapus saat Anda menghapus PVC. Hal ini karena parameter archiveOnDelete yang mendasari tidak dapat dikonfigurasi melalui UI. Untuk mengonfigurasi archiveOnDelete, buat PV menggunakan manifes YAML. Untuk templat YAML, lihat tab kubectl.

    • Retain: Saat PVC dihapus, PV dan data pada volume NAS tidak dihapus. Anda harus menghapusnya secara manual.

    Retain

    Mount Options

    Opsi pemasangan untuk volume NAS, termasuk versi protokol NFS. Secara default, protokol NFSv3 digunakan untuk pemasangan. Anda dapat menentukan versi protokol, misalnya vers=4.0. Untuk informasi selengkapnya tentang protokol NFS yang didukung oleh berbagai jenis NAS, lihat NFS protocol.

    Biarkan nilai default

    Setelah StorageClass dibuat, Anda dapat melihatnya dalam daftar StorageClasses.

Langkah 3: Buat PVC

kubectl

  1. Ubah konten YAML dan simpan sebagai nas-pvc.yaml.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata: 
      name: nas-csi-pvc
    spec:
      accessModes:
      - ReadWriteMany 
      storageClassName: alicloud-nas-subpath
      resources: 
        requests:
          storage: 20Gi

    Parameter

    Deskripsi

    accessModes

    Mode akses untuk volume. Nilai default adalah ReadWriteMany. ReadWriteOnce dan ReadOnlyMany juga didukung.

    storageClassName

    Nama StorageClass yang akan di-bind.

    storage

    Kapasitas volume yang ingin Anda minta.

    Penting
    • Secara default, kapasitas aktual yang tersedia pada volume NAS tidak dibatasi oleh konfigurasi ini. Kapasitas ditentukan oleh spesifikasi sistem file NAS. Untuk informasi selengkapnya, lihat General-purpose NAS dan Extreme NAS.

    • Jika Anda menggunakan sistem file NAS tujuan umum dan mengatur allowVolumeExpansion StorageClass ke true, komponen CSI menetapkan kuota direktori berdasarkan konfigurasi ini untuk membatasi kapasitas yang tersedia pada volume NAS.

  2. Buat PVC.

    kubectl create -f nas-pvc.yaml
  3. Lihat PV.

    kubectl get pvc

    Output menunjukkan bahwa komponen CSI secara otomatis membuat PV berdasarkan StorageClass dan mengikat PV tersebut ke PVC.

    NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                 STORAGECLASS             VOLUMEATTRIBUTESCLASS   REASON   AGE
    nas-a7540d97-0f53-4e05-b7d9-557309******   20Gi       RWX            Retain           Bound    default/nas-csi-pvc   alicloud-nas-subpath     <unset>                          5m

Console

  1. Di panel navigasi kiri halaman detail, pilih Volumes > Persistent Volume Claims.

  2. Pada halaman Persistent Volume Claims, klik Create.

  3. Pada dialog Create PVC, konfigurasi parameter dan klik Create.

    Item konfigurasi

    Deskripsi

    Nilai contoh

    PVC Type

    Pilih NAS.

    NAS

    Name

    Nama PVC. Nama harus unik dalam namespace.

    pvc-nas

    Allocation Mode

    Dalam contoh ini, pilih Use StorageClass.

    Use StorageClass

    Existing StorageClass

    Klik Select StorageClass dan pilih StorageClass yang Anda buat pada langkah sebelumnya.

    alicloud-nas-subpath

    Capacity

    Kapasitas volume. Pengaturan ini tidak membatasi kapasitas maksimum yang dapat digunakan aplikasi.

    Penting
    • Secara default, kapasitas aktual yang tersedia pada volume NAS tidak dibatasi oleh konfigurasi ini. Kapasitas ditentukan oleh spesifikasi sistem file NAS. Untuk informasi selengkapnya, lihat General-purpose NAS dan Extreme NAS.

    • Jika Anda menggunakan sistem file NAS tujuan umum dan mengatur allowVolumeExpansion StorageClass ke true, komponen CSI menetapkan kuota direktori berdasarkan konfigurasi ini untuk membatasi kapasitas yang tersedia pada volume NAS.

    20Gi

    Access Mode

    Nilai default adalah ReadWriteMany. Anda juga dapat memilih ReadWriteOnce atau ReadOnlyMany.

    ReadWriteMany

Langkah 4: Buat aplikasi dan pasang volume NAS

kubectl

Buat dua deployment dan pasang PVC yang sama ke keduanya. Hal ini memungkinkan mereka berbagi subdirektori yang sama dalam sistem file NAS yang sama.

Catatan

Untuk memasang subdirektori berbeda dari sistem file NAS yang sama ke beberapa Pod, buat StorageClass dan PVC berbeda untuk subdirektori tersebut, lalu pasang PVC ke Pod.

  1. Ubah konten YAML berikut dan simpan file sebagai nginx-1.yaml dan nginx-2.yaml.

    Templat YAML berikut menunjukkan bahwa konfigurasi dalam nginx-1.yaml dan nginx-2.yaml sama, kecuali nilai metadata.name. Kedua aplikasi di-bind ke PVC yang sama.

    nginx-1.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nas-test-1     
      labels:
        app: nginx
    spec:
      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: nas-pvc
                mountPath: "/data"           # Path tempat volume NAS dipasang di dalam kontainer.
          volumes:
            - name: nas-pvc                 
              persistentVolumeClaim:
                claimName: nas-csi-pvc       # Bind PVC.

    nginx-2.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nas-test-2     
      labels:
        app: nginx
    spec:
      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: nas-pvc
                mountPath: "/data"           # Path tempat volume NAS dipasang di dalam kontainer.
          volumes:
            - name: nas-pvc                 
              persistentVolumeClaim:
                claimName: nas-csi-pvc       # Bind PVC.
  2. Buat kedua deployment tersebut.

    kubectl create -f nginx-1.yaml -f nginx-2.yaml
  3. Lihat informasi Pod.

    kubectl get pod -l app=nginx

    Output menunjukkan bahwa subdirektori yang sama dari sistem file NAS yang sama dipasang ke aplikasi berbeda.

    NAME                         READY   STATUS    RESTARTS   AGE
    nas-test-1-b75d5b6bc-vqwq9   1/1     Running   0          51s
    nas-test-2-b75d5b6bc-8k9vx   1/1     Running   0          44s

Console

Ulangi langkah-langkah berikut untuk membuat dua deployment yang memasang PVC yang sama. Hal ini memungkinkan mereka berbagi satu subdirektori dalam sistem file NAS.

  1. Di panel navigasi kiri, pilih Workloads > Deployments.

  2. Pada halaman Stateless, klik Create From Image.

  3. Konfigurasi parameter untuk membuat aplikasi.

    Tabel berikut menjelaskan parameter utama. Anda dapat mempertahankan pengaturan default untuk parameter lainnya. Untuk informasi selengkapnya, lihat Create a stateless workload (Deployment).

    Item konfigurasi

    Parameter

    Deskripsi

    Contoh

    Basic Information

    Name

    Masukkan nama kustom untuk deployment. Nama harus memenuhi persyaratan format yang ditampilkan di konsol.

    deployment-nas-1

    Number of Replicas

    Jumlah replika deployment.

    1

    Container Configuration

    Image Name

    Alamat citra yang digunakan untuk men-deploy aplikasi.

    anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6

    Required Resources

    Resource vCPU dan memori yang dibutuhkan.

    0.25 vCPU, 512 MiB

    Volume

    Klik Add PVC dan konfigurasi parameter.

    • Mount Source: Pilih PVC yang Anda buat.

    • Container Path: Tentukan path kontainer tempat Anda ingin memasang sistem file NAS.

    • Mount Source: pvc-nas

    • Container Path: /data

    nas1.png

  4. Lihat status deployment aplikasi.

    1. Pada halaman Stateless, klik nama aplikasi.

    2. Pada tab Pods, pastikan Pod berada dalam status Running.

Mount using the sharepath method

Langkah 1: Dapatkan informasi sistem file NAS dan titik pemasangan

  1. Login ke NAS console. Di panel navigasi sebelah kiri, pilih File System > File System List.

  2. Buat sistem file NAS dan titik pemasangan.

    Hanya sistem file NAS yang menggunakan protokol NFS yang dapat dipasang. Titik pemasangan dan node kluster harus berada dalam VPC yang sama.

    • Jika Anda memiliki sistem file NAS yang sudah ada, pastikan sistem tersebut memenuhi persyaratan.

    • Jika Anda belum memiliki sistem file NAS yang tersedia, buat sistem file NAS dan titik pemasangan yang memenuhi persyaratan. Untuk informasi selengkapnya, lihat Create a file system dan Manage mount targets.

  3. Dapatkan informasi titik pemasangan.

    1. Klik ID sistem file. Di panel navigasi sebelah kiri, klik Mount and Use.

    2. Pada bagian Mount Target, pastikan status titik pemasangan adalah Available, lalu dapatkan alamat titik pemasangan tersebut.

Langkah 2: Buat StorageClass

kubectl

  1. Simpan konten berikut ke file alicloud-nas-sharepath.yaml dan ubah parameter sesuai kebutuhan.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-nas-sharepath
    mountOptions:
    - nolock,tcp,noresvport
    - vers=3
    parameters:
      volumeAs: sharepath
      server: "0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com:/sharepath"
    provisioner: nasplugin.csi.alibabacloud.com
    reclaimPolicy: Retain

    Parameter

    Deskripsi

    mountOptions

    Opsi pemasangan untuk volume NAS, termasuk versi protokol NFS. Secara default, protokol NFSv3 digunakan untuk pemasangan. Anda dapat menentukan versi protokol, misalnya vers=4.0. Untuk informasi selengkapnya tentang protokol NFS yang didukung oleh berbagai jenis NAS, lihat NFS protocol.

    parameters

    volumeAs

    Metode pemasangan. Dalam contoh ini, nilainya diatur ke sharepath, yang menunjukkan bahwa saat PV dibuat, tidak ada direktori aktual yang dibuat. Sebaliknya, path yang ditentukan dalam StorageClass digunakan. Artinya, setiap PV memetakan ke direktori NAS yang sama.

    server

    Alamat titik pemasangan dan subdirektori sistem file NAS yang akan dipasang. Formatnya adalah <NAS mount target address>:<mount directory>.

    • Jika Anda tidak menentukan subdirektori, direktori root / dipasang secara default.

    • Jika direktori tidak ada dalam sistem file NAS, direktori tersebut akan dibuat secara otomatis lalu dipasang.

    Direktori root sistem file NAS tujuan umum adalah /, dan direktori root sistem file NAS Ekstrem adalah /share. Saat Anda memasang subdirektori sistem file NAS Ekstrem, path harus dimulai dengan /share, seperti /share/data.

    provisioner

    Jenis driver. Nilainya harus diatur ke nasplugin.csi.alibabacloud.com, yang menunjukkan bahwa plugin Alibaba Cloud NAS CSI digunakan.

    reclaimPolicy

    Kebijakan reclaim PV. Saat Anda menggunakan metode sharepath, Anda harus mengatur parameter ini ke Retain.

  2. Buat StorageClass.

    kubectl create -f alicloud-nas-sharepath.yaml

Console

  1. Login ke ACK console. Di panel navigasi kiri, klik Clusters.

  2. Pada halaman StorageClasses, klik Create.

  3. Pada dialog Create, konfigurasi parameter StorageClass dan klik Create.

    Item konfigurasi utama dijelaskan di bawah ini.

    Item konfigurasi

    Deskripsi

    Nilai contoh

    Name

    Nama StorageClass. Untuk informasi selengkapnya tentang persyaratan format, lihat petunjuk di konsol.

    alicloud-nas-sharepath

    PV Type

    Pilih NAS.

    NAS

    Select Mount Target

    Alamat titik pemasangan sistem file NAS.

    0cd8b4a576-g****.cn-hangzhou.nas.aliyuncs.com

    Volume Mode

    Mode akses volume. Dalam contoh ini, pilih Shared Directory untuk menggunakan metode sharepath. Saat PV dibuat, tidak ada direktori aktual yang dibuat. Sebaliknya, path yang ditentukan dalam StorageClass digunakan. Artinya, setiap PV memetakan ke direktori NAS yang sama. Metode ini ideal untuk skenario di mana Anda perlu berbagi direktori lintas namespace.

    Shared Directory

    Mount Path

    Subdirektori pada sistem file NAS yang akan dipasang.

    • Jika tidak diatur, direktori root dipasang secara default.

    • Jika direktori yang ditentukan tidak ada, direktori tersebut akan dibuat secara otomatis lalu dipasang.

    Catatan

    Direktori root adalah / untuk sistem file NAS tujuan umum dan /share untuk sistem file NAS Ekstrem. Saat Anda memasang subdirektori pada sistem file NAS Ekstrem, path harus dimulai dengan /share, seperti /share/data.

    /sharepath

    Reclaim Policy

    Saat Anda menggunakan metode sharepath, Anda harus mengatur parameter ini ke Retain.

    Retain

    Mount Options

    Opsi pemasangan untuk volume NAS, termasuk versi protokol NFS. Secara default, protokol NFSv3 digunakan untuk pemasangan. Anda dapat menentukan versi protokol, misalnya vers=4.0. Untuk informasi selengkapnya tentang protokol NFS yang didukung oleh berbagai jenis NAS, lihat NFS protocol.

    Biarkan nilai default

    Setelah StorageClass dibuat, Anda dapat melihatnya dalam daftar StorageClasses.

Langkah 3: Buat PVC

Contoh berikut menunjukkan cara membuat PVC di dua namespace berbeda.

kubectl

Untuk memasang volume NAS ke Pod di namespace berbeda, pertama-tama buat dua namespace.

  1. Buat namespace ns1 dan ns2.

    kubectl create ns ns1
    kubectl create ns ns2
  2. Ubah konten YAML berikut dan simpan sebagai pvc.yaml.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata: 
      name: nas-csi-pvc
      namespace: ns1
    spec:
      accessModes:
      - ReadWriteMany 
      storageClassName: alicloud-nas-sharepath
      resources: 
        requests:
          storage: 20Gi
    ---
    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata: 
      name: nas-csi-pvc
      namespace: ns2
    spec:
      accessModes:
      - ReadWriteMany 
      storageClassName: alicloud-nas-sharepath
      resources: 
        requests:
          storage: 20Gi

    Parameter

    Deskripsi

    accessModes

    Mode akses untuk volume. Nilai default adalah ReadWriteMany. ReadWriteOnce dan ReadOnlyMany juga didukung.

    storageClassName

    Nama StorageClass yang akan di-bind.

    storage

    Kapasitas volume yang ingin Anda minta.

    Penting
    • Secara default, kapasitas aktual yang tersedia pada volume NAS tidak dibatasi oleh konfigurasi ini. Kapasitas ditentukan oleh spesifikasi sistem file NAS. Untuk informasi selengkapnya, lihat General-purpose NAS dan Extreme NAS.

    • Jika Anda menggunakan sistem file NAS tujuan umum dan mengatur allowVolumeExpansion StorageClass ke true, komponen CSI menetapkan kuota direktori berdasarkan konfigurasi ini untuk membatasi kapasitas yang tersedia pada volume NAS.

  3. Buat PVC.

    kubectl create -f pvc.yaml
  4. Lihat PV.

    kubectl get pv

    Output menunjukkan bahwa komponen CSI secara otomatis membuat dua PV berdasarkan StorageClass dan mengikatnya ke dua PVC di namespace berbeda.

    NAME                                       CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM                 STORAGECLASS             VOLUMEATTRIBUTESCLASS   REASON   AGE
    nas-0b448885-6226-4d22-8a5b-d0768c******   20Gi       RWX            Retain           Bound    ns1/nas-csi-pvc       alicloud-nas-sharepath   <unset>                          74s
    nas-bcd21c93-8219-4a11-986b-fd934a******   20Gi       RWX            Retain           Bound    ns2/nas-csi-pvc       alicloud-nas-sharepath   <unset>                          74s

Console

  1. Buat namespace ns1 dan ns2. Untuk informasi selengkapnya, lihat Create a namespace.

  2. Di panel navigasi kiri halaman detail, pilih Volumes > Persistent Volume Claims.

  3. Buat klaim volume persisten (PVC) di namespace ns.

    1. Pada halaman Persistent Volume Claims, atur Namespace ke ns1 dan klik Create.

    2. Pada dialog Create PVC, konfigurasi parameter dan klik Create.

      Item konfigurasi

      Deskripsi

      Nilai contoh

      PVC Type

      Pilih NAS.

      NAS

      Name

      Nama PVC. Nama harus unik dalam namespace.

      pvc-nas

      Allocation Mode

      Dalam contoh ini, pilih Use StorageClass.

      Dynamic provisioning with a StorageClass

      Existing StorageClass

      Klik Select StorageClass dan pilih StorageClass yang Anda buat.

      alicloud-nas-sharepath

      Capacity

      Kapasitas volume.

      20Gi

      Access Mode

      Nilai default adalah ReadWriteMany. Anda juga dapat memilih ReadWriteOnce atau ReadOnlyMany.

      ReadWriteMany

  4. Ulangi langkah sebelumnya untuk membuat PVC lain di namespace ns2.

  5. Kembali ke halaman Persistent Volume Claims. Di namespace ns1 dan ns2, pastikan kedua PVC diikat ke PV yang dibuat secara otomatis.

Langkah 4: Buat aplikasi dan pasang volume NAS

Buat aplikasi di dua namespace berbeda dan pasang PVC di namespace yang sesuai. Aplikasi tersebut akan berbagi direktori NAS yang ditentukan dalam StorageClass.

kubectl

  1. Ubah konten YAML berikut dan simpan file sebagai nginx-ns1.yaml dan nginx-ns2.yaml.

    Templat YAML berikut menunjukkan bahwa konfigurasi dalam nginx-ns1.yaml dan nginx-ns2.yaml sama, kecuali nilai metadata.namespace. Kedua aplikasi di-bind ke PVC di namespace masing-masing.

    nginx-ns1.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nas-test
      namespace: ns1   
    spec:
      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: nas-pvc
                mountPath: "/data"
          volumes:
            - name: nas-pvc
              persistentVolumeClaim:
                claimName: nas-csi-pvc

    nginx-ns2.yaml

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: nas-test
      namespace: ns2   
    spec:
      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: nas-pvc
                mountPath: "/data"
          volumes:
            - name: nas-pvc
              persistentVolumeClaim:
                claimName: nas-csi-pvc
  2. Buat kedua deployment tersebut.

    kubectl create -f nginx-ns1.yaml -f nginx-ns2.yaml
  3. Lihat informasi Pod.

    kubectl get pod -A -l app=nginx

    Output menunjukkan bahwa subdirektori yang sama dari sistem file NAS yang sama dipasang ke Pod di namespace berbeda.

    NAMESPACE   NAME                         READY   STATUS    RESTARTS   AGE
    ns1         nas-test-b75d5b6bc-ljvfd     1/1     Running   0          2m19s
    ns2         nas-test-b75d5b6bc-666hn     1/1     Running   0          2m11s

Console

  1. Di panel navigasi kiri, pilih Workloads > Deployments.

  2. Buat deployment di namespace ns1 dan pasang PVC yang sesuai.

    1. Atur Namespace ke ns1 dan klik Create from Image.

    2. Konfigurasi parameter untuk membuat aplikasi.

      Tabel berikut menjelaskan parameter utama. Anda dapat mempertahankan pengaturan default untuk parameter lainnya. Untuk informasi selengkapnya, lihat Create a stateless workload (Deployment).

      Item konfigurasi

      Parameter

      Deskripsi

      Contoh

      Basic Information

      Name

      Masukkan nama kustom untuk deployment. Nama harus memenuhi persyaratan format yang ditampilkan di konsol.

      nginx

      Replicas

      Jumlah replika deployment.

      2

      Container Configuration

      Image Name

      Alamat citra yang digunakan untuk men-deploy aplikasi.

      anolis-registry.cn-zhangjiakou.cr.aliyuncs.com/openanolis/nginx:1.14.1-8.6

      Required Resources

      Resource vCPU dan memori yang dibutuhkan.

      0.25 vCPU, 512 MiB

      Volume

      Klik Add PVC dan konfigurasi parameter.

      • Mount Source: Pilih PVC yang Anda buat.

      • Container Path: Tentukan path kontainer tempat Anda ingin memasang sistem file NAS.

      • Mount Source: pvc-nas

      • Container Path: /data

      nas1.png

  3. Ulangi langkah sebelumnya untuk membuat deployment lain di namespace ns2 dan pasang PVC yang sesuai.

  4. Kembali ke halaman Stateless dan periksa status kedua Deployment di namespace ns1 dan ns2 untuk memastikan Pod berjalan dan memiliki PVC yang sesuai terpasang.

Mount using the filesystem method

Jika aplikasi Anda perlu membuat dan menghapus sistem file NAS serta titik pemasangan secara dinamis, gunakan metode filesystem untuk memasang volume NAS. Saat menggunakan metode filesystem, setiap PV berkorespondensi dengan sistem file NAS dan titik pemasangan baru.

Penting

Secara default, saat PV bertipe filesystem yang diprovisikan secara dinamis dihapus, sistem file NAS dan titik pemasangan yang sesuai dipertahankan. Untuk menghapus sistem file dan titik pemasangan secara otomatis saat PV dihapus, Anda harus mengatur reclaimPolicy ke Delete dan deleteVolume ke true dalam StorageClass.

Langkah 1: Atur dan berikan izin RAM (Diperlukan hanya untuk ACK dedicated clusters)

Volume NAS bertipe filesystem melibatkan pembuatan dan penghapusan sistem file NAS serta titik pemasangan secara dinamis. Oleh karena itu, Anda harus memberikan izin yang diperlukan kepada komponen csi-provisioner untuk ACK dedicated cluster.

Blok kode berikut menunjukkan set minimum izin yang diperlukan oleh kebijakan RAM.

{
    "Action": [
        "nas:DescribeMountTargets",
        "nas:CreateMountTarget",
        "nas:DeleteFileSystem",
        "nas:DeleteMountTarget",
        "nas:CreateFileSystem"
    ],
    "Resource": [
        "*"
    ],
    "Effect": "Allow"
}

Anda dapat memberikan izin dengan salah satu cara berikut:

  • Edit kebijakan kustom Peran RAM Master untuk ACK dedicated cluster untuk menambahkan izin terkait NAS. Untuk informasi selengkapnya, lihat Modify the document and description of a custom policy.自定义授权

  • Buat pengguna RAM, berikan kebijakan RAM, hasilkan AccessKey, dan tambahkan AccessKey ke variabel env csi-provisioner.

    env:
    - name: CSI_ENDPOINT
      value: unix://socketDir/csi.sock
    - name: ACCESS_KEY_ID
      value: ""
    - name: ACCESS_KEY_SECRET
      value: ""

Langkah 2: Buat StorageClass

  1. Ubah konten YAML berikut dan simpan sebagai alicloud-nas-fs.yaml.

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: alicloud-nas-fs
    mountOptions:
    - nolock,tcp,noresvport
    - vers=3
    parameters:
      volumeAs: filesystem
      fileSystemType: standard
      storageType: Performance
      regionId: cn-beijing
      zoneId: cn-beijing-e
      vpcId: "vpc-2ze2fxn6popm8c2mzm****"
      vSwitchId: "vsw-2zwdg25a2b4y5juy****"
      accessGroupName: DEFAULT_VPC_GROUP_NAME
      deleteVolume: "false"
    provisioner: nasplugin.csi.alibabacloud.com
    reclaimPolicy: Retain

    Parameter

    Deskripsi

    mountOptions

    Opsi pemasangan untuk volume NAS, termasuk versi protokol NFS. Secara default, protokol NFSv3 digunakan untuk pemasangan. Anda dapat menentukan versi protokol, misalnya vers=4.0. Untuk informasi selengkapnya tentang protokol NFS yang didukung oleh berbagai jenis NAS, lihat NFS protocol.

    parameters

    volumeAs

    Metode pemasangan. Dalam contoh ini, nilainya diatur ke filesystem untuk membuat sistem file NAS secara otomatis. Satu PV berkorespondensi dengan satu sistem file NAS.

    fileSystemType

    Jenis sistem file NAS. Nilai yang valid:

    • standard (default): Sistem file NAS tujuan umum.

    • extreme: Sistem file NAS Ekstrem.

    storageType

    Jenis penyimpanan sistem file NAS.

    • Untuk sistem file NAS tujuan umum, nilai yang valid adalah:

      • Performance (default): Performance

      • Capacity: storage-optimized

    • Untuk sistem file NAS Ekstrem, nilai yang valid adalah:

      • standard (default): Standard

      • advance: Advanced

    regionId

    Wilayah tempat sistem file NAS berada. Wilayah harus sama dengan wilayah kluster.

    zoneId

    Zona tempat sistem file NAS berada.

    Catatan

    Dalam VPC yang sama, Anda dapat memasang sistem file NAS lintas zona.

    vpcId

    VPC tempat titik pemasangan sistem file NAS berada. VPC harus sama dengan VPC kluster.

    vSwitchId

    ID vSwitch tempat titik pemasangan sistem file NAS berada.

    accessGroupName

    Grup izin titik pemasangan. Nilai default adalah DEFAULT_VPC_GROUP_NAME.

    deleteVolume

    Menentukan apakah PV dan sistem file NAS serta titik pemasangan yang sesuai dihapus saat PVC dihapus. Karena NAS adalah sistem file bersama, Anda harus mengonfigurasi deleteVolume dan reclaimPolicy untuk tujuan keamanan.

    provisioner

    Jenis driver. Nilainya harus diatur ke nasplugin.csi.alibabacloud.com, yang menunjukkan bahwa komponen Alibaba Cloud NAS CSI digunakan.

    reclaimPolicy

    Kebijakan reclaim PV. Hanya ketika parameter ini diatur ke Delete dan deleteVolume diatur ke true, PV dan sistem file NAS serta titik pemasangan yang sesuai dihapus saat PVC dihapus.

  2. Jalankan perintah berikut untuk membuat StorageClass.

    kubectl create -f alicloud-nas-fs.yaml

Langkah 3: Buat PVC

  1. Ubah konten YAML berikut dan simpan sebagai nas-pvc-fs.yaml.

    kind: PersistentVolumeClaim
    apiVersion: v1
    metadata:
      name: nas-csi-pvc-fs
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: alicloud-nas-fs
      resources:
        requests:
          storage: 20Gi
  2. Buat PVC.

    kubectl create -f nas-pvc-fs.yaml

Langkah 4: Buat aplikasi dan pasang volume NAS

  1. Ubah konten YAML berikut dan simpan sebagai nas-fs.yaml.

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: deployment-nas-fs
      labels:
        app: nginx-test
    spec:
      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: nas-pvc
                mountPath: "/data"
          volumes:
            - name: nas-pvc
              persistentVolumeClaim:
                claimName: nas-csi-pvc-fs
  2. Buat deployment.

    kubectl create -f nas-fs.yaml

Verifikasi penyimpanan bersama dan persisten NAS

Pod yang dibuat pada contoh sebelumnya memasang sistem file NAS yang sama. Anda dapat melakukan operasi berikut untuk memverifikasi penyimpanan:

  • Buat file di satu Pod, lalu lihat file tersebut dari Pod lain untuk memverifikasi penyimpanan bersama.

  • Buat ulang deployment dan periksa apakah data dalam sistem file masih ada di Pod yang baru dibuat untuk memverifikasi penyimpanan persisten.

  1. Kueri informasi Pod.

    kubectl get pod | grep nas-test

    Contoh output:

    nas-test-*****a   1/1     Running   0          40s
    nas-test-*****b   1/1     Running   0          40s
  2. Verifikasi fitur penyimpanan bersama.

    1. Buat file di sebuah Pod.

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

      kubectl exec nas-test-*****a -- touch /data/test.txt
    2. Lihat file dari Pod lain.

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

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

      Output yang diharapkan menunjukkan bahwa file baru test.txt dibagikan:

      test.txt
  3. Verifikasi fitur penyimpanan persisten.

    1. Buat ulang deployment.

      kubectl rollout restart deploy nas-test
    2. Kueri Pod dan tunggu hingga Pod baru dibuat.

      kubectl get pod | grep nas-test

      Contoh output:

      nas-test-*****c   1/1     Running   0          67s
      nas-test-*****d   1/1     Running   0          49s
    3. Periksa apakah data dalam sistem file ada di Pod baru.

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

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

      Output yang diharapkan menunjukkan bahwa data dalam sistem file NAS masih ada dan dapat diambil dari direktori pemasangan Pod baru:

      test.txt

FAQ

Jika Anda mengalami masalah saat memasang atau menggunakan volume NAS, lihat topik berikut untuk troubleshooting.

Referensi

  • Anda dapat menggunakan Container Network File System (CNFS) untuk mengelola sistem file NAS secara independen dan meningkatkan performa serta kontrol Quality of Service (QoS). Untuk informasi selengkapnya, lihat Use CNFS to manage NAS file systems.

  • Sistem file NAS tujuan umum yang dipasang menggunakan metode subpath mendukung fitur kuota direktori. Anda dapat menetapkan batas kapasitas untuk PV subdirektori guna meningkatkan pemanfaatan resource. Untuk informasi selengkapnya, lihat Set directory quotas for dynamically provisioned NAS volumes.