全部产品
Search
文档中心

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

更新时间:Nov 11, 2025

Volume Network Attached Storage (NAS) sangat ideal untuk skenario seperti analitik data besar, berbagi data, aplikasi web, dan persistensi log. Alih-alih membuat dan mengonfigurasi sumber daya penyimpanan statis secara manual, Anda dapat menggunakan klaim volume persisten (PVC) dan StorageClass untuk menyediakannya secara dinamis. Dengan cara ini, sistem akan secara otomatis membuat volume persisten (PV) untuk Anda. Volume NAS yang disediakan secara dinamis dapat dipasang menggunakan tiga metode: subpath, sharepath, dan filesystem.

Prasyarat

  • Plugin CSI telah diinstal di kluster. Jika diperlukan peningkatan, lihat Tingkatkan csi-plugin dan csi-provisioner.

    Catatan

    Jika kluster Anda menggunakan FlexVolume, tingkatkan ke CSI karena FlexVolume sudah tidak digunakan lagi. Untuk detailnya, lihat Tingkatkan dari FlexVolume ke CSI. Untuk memverifikasi jenis komponen penyimpanan Anda, buka Operations > Add-ons, lalu klik tab Storage.

  • Layanan Penyimpanan File NAS telah diaktifkan.

    Jika Anda menggunakannya untuk pertama kali, ikuti petunjuk di layar pada halaman produk Penyimpanan File NAS untuk mengaktifkan layanan tersebut.

Batasan

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

  • Sistem file NAS hanya dapat dipasang ke pod dalam virtual private cloud (VPC) yang sama. Pemasangan lintas-VPC tidak didukung.

    Catatan

    Dalam VPC yang sama, volume NAS dapat dipasang lintas zona ketersediaan (AZ) yang berbeda.

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

Catatan penggunaan

Metode pemasangan

Parameter volumeAs dalam StorageClass menentukan hubungan antara PV dan sistem file NAS atau subdirektori-nya. Pilih metode pemasangan sesuai kebutuhan.

Metode pemasangan

Deskripsi

Kasus penggunaan

Menggunakan subpath

Membuat PV bertipe subdirektori, di mana setiap PV sesuai 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.

Menggunakan sharepath

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

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

Menggunakan filesystem (Tidak disarankan)

Otomatis membuat sistem file NAS untuk setiap PV. Satu PV sesuai dengan satu sistem file NAS lengkap.

Aplikasi memerlukan sistem file NAS khusus yang perlu dibuat dan dihapus secara dinamis bersama beban kerja.

Pasang menggunakan metode subpath

Penting

Metode subpath memerlukan versi komponen Container Storage Interface (CSI) 1.31.4 atau lebih baru. Untuk meningkatkan, lihat Tingkatkan csi-plugin dan csi-provisioner.

Langkah 1: Dapatkan informasi sistem file NAS dan titik pemasangan

  1. Masuk ke Konsol NAS. Di panel navigasi kiri, pilih File System > File System List.

  2. Buat sistem file NAS dan titik pemasangan.

    Pastikan sistem file menggunakan protokol Network File System (NFS) dan titik pemasangan berada dalam VPC yang sama dengan node kluster Anda.

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

    • Jika Anda belum memiliki sistem file NAS, buat satu. Untuk petunjuknya, lihat Buat sistem file dan Kelola titik pemasangan.

  3. Dapatkan alamat titik pemasangan.

    1. Klik ID sistem file. Di panel navigasi kiri, klik Mount Targets.

    2. Di bagian Mount Target, pastikan statusnya Available dan salin alamat titik pemasangan.

Langkah 2: Buat StorageClass

kubectl

  1. Modifikasi manifes 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. Kami merekomendasikan penggunaan NFSv3. NAS Ekstrem hanya mendukung NFSv3.

    parameters

    volumeAs

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

    server

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

    archiveOnDelete

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

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

    • false: Sumber daya penyimpanan backend dihapus secara permanen.

    Catatan
    • Untuk beban kerja berlalu lintas tinggi, tidak disarankan mengatur parameter ini ke false. Untuk informasi lebih lanjut, lihat FAQ volume NAS.

    • Untuk menghapus sepenuhnya data penyimpanan backend, Anda harus mengatur parameters.archiveOnDelete ke false menggunakan kubectl.

    provisioner

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

    reclaimPolicy

    Kebijakan pengembalian PV. Nilai default-nya adalah Delete. Retain juga didukung.

    • Delete: Nilai ini harus digunakan bersama archiveOnDelete.

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

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

        Penting

        Direktori subpath dan file-nya dalam sistem file NAS akan dihapus. Sistem file NAS itu sendiri dipertahankan. Untuk menghapus sistem file NAS, lihat Hapus sistem file.

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

    Jika keamanan data menjadi prioritas tinggi, kami merekomendasikan mengatur parameter ini ke Retain untuk mencegah kehilangan data yang tidak disengaja.

    allowVolumeExpansion

    Didukung hanya untuk sistem file NAS tujuan umum. Jika diatur ke true, kuota direktori dikonfigurasi untuk PV yang dibuat secara dinamis oleh StorageClass untuk membatasi kapasitas yang tersedia. Anda juga dapat memperbarui PVC untuk memperluas kapasitas volume. Untuk informasi lebih lanjut, lihat Atur kuota direktori untuk volume NAS yang disediakan secara dinamis.

    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. Lihat Kuota direktori.

  2. Buat StorageClass.

    kubectl create -f alicloud-nas-subpath.yaml

Konsol

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

  2. Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel kiri, pilih Volumes > StorageClasses.

  3. Di halaman StorageClasses, klik Create.

  4. Pada kotak dialog yang muncul, konfigurasi parameter dan klik OK.

    Tabel berikut menjelaskan konfigurasi:

    Konfigurasi

    Deskripsi

    Contoh

    Name

    Nama StorageClass. Lihat UI untuk persyaratan format.

    alicloud-nas-subpath

    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 Subdirectory untuk menggunakan metode subpath. Subdirektori unik akan dibuat secara otomatis di bawah path pemasangan untuk setiap PV. Data disimpan di <titik pemasangan NAS>:<path pemasangan>/<nama-pv>/.

    Catatan

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

    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 memasang subdirektori pada sistem file NAS Ekstrem, path harus dimulai dengan /share, seperti /share/data.

    /k8s

    Reclaim Policy

    Kebijakan pengembalian PV. Retain direkomendasikan untuk mencegah kehilangan data yang tidak disengaja.

    • Delete: Parameter ini harus dikonfigurasi bersama archiveOnDelete. Di konsol, memilih Delete tidak akan benar-benar menghapus data pada volume NAS saat Anda menghapus PVC. Hal ini karena parameter archiveOnDelete yang mendasarinya 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. Kami merekomendasikan penggunaan NFSv3. NAS Ekstrem hanya mendukung NFSv3.

    Pertahankan nilai default

    Setelah StorageClass dibuat, Anda dapat melihatnya di daftar StorageClasses.

Langkah 3: Buat PVC

kubectl

  1. Modifikasi manifes 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-nya adalah ReadWriteMany. ReadWriteOnce dan ReadOnlyMany juga didukung.

    storageClassName

    Nama StorageClass yang akan diikat.

    storage

    Kapasitas volume yang ingin Anda minta.

    Penting
    • Secara default, kapasitas sebenarnya yang tersedia untuk volume NAS tidak dibatasi oleh konfigurasi ini. Kapasitas ditentukan oleh spesifikasi sistem file NAS. Untuk informasi lebih lanjut, lihat NAS tujuan umum dan NAS Ekstrem.

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

  2. Buat PVC.

    kubectl create -f nas-pvc.yaml
  3. Verifikasi bahwa PV telah dibuat dan diikat ke PVC.

    kubectl get pvc

    Output harus menunjukkan STATUS sebagai Bound, yang menunjukkan bahwa komponen CSI secara otomatis membuat PV berdasarkan StorageClass dan mengikat PV 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

Konsol

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

  2. Di halaman Persistent Volume Claims, klik Create.

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

    Konfigurasi

    Deskripsi

    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 yang telah 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 sebenarnya yang tersedia untuk volume NAS tidak dibatasi oleh konfigurasi ini. Kapasitas ditentukan oleh spesifikasi sistem file NAS. Untuk informasi lebih lanjut, lihat NAS tujuan umum dan NAS Ekstrem.

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

    20Gi

    Access Mode

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

    ReadWriteMany

Langkah 4: Buat aplikasi dan pasang volume NAS

kubectl

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

Catatan

Untuk menetapkan pod berbeda ke subdirektori unik pada sistem file NAS yang sama, buat StorageClass dan PVC berbeda untuk setiap direktori target.

  1. Modifikasi manifes YAML berikut dan simpan file sebagai nginx-1.yaml dan nginx-2.yaml masing-masing.

    Konfigurasi berikut dalam nginx-1.yaml dan nginx-2.yaml sama, kecuali nilai metadata.name. Kedua aplikasi diikat 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       # Digunakan untuk mengikat 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       # Digunakan untuk mengikat PVC
  2. Buat dua Penyebaran tersebut.

    kubectl create -f nginx-1.yaml -f nginx-2.yaml
  3. Verifikasi pod sedang berjalan.

    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

Konsol

Ulangi langkah-langkah berikut untuk membuat dua Penyebaran yang memasang PVC yang sama, sehingga memungkinkan mereka berbagi satu subdirektori dalam sistem file NAS.

  1. Di panel navigasi kiri halaman detail kluster, buka Workloads > Deployments.

  2. Di halaman Deployments, 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 lebih lanjut, lihat Buat beban kerja tanpa status (Deployment).

    Langkah konfigurasi

    Parameter

    Deskripsi

    Contoh

    Basic Information

    Name

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

    deployment-nas-1

    Replicas

    Jumlah replika pod.

    1

    Container

    Image Name

    Alamat citra yang digunakan untuk menyebar aplikasi.

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

    Required Resources

    Sumber daya vCPU dan memori yang diperlukan.

    0.25 vCPU, 512 MiB

    Volume

    Klik Add PVC dan konfigurasi parameter.

    • Mount Source: Pilih PVC yang telah 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 penyebaran aplikasi.

    1. Di halaman Deployments, klik nama aplikasi.

    2. Di tab Pods, pastikan pod berada dalam status Running.

Pasang menggunakan metode sharepath

Langkah 1: Dapatkan informasi sistem file NAS dan titik pemasangan

  1. Masuk ke Konsol NAS. Di panel navigasi kiri, pilih File System > File System List.

  2. Buat sistem file NAS dan titik pemasangan.

    Pastikan sistem file menggunakan protokol Network File System (NFS) dan titik pemasangan berada dalam VPC yang sama dengan node kluster Anda.

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

    • Jika Anda belum memiliki sistem file NAS, buat satu. Untuk petunjuknya, lihat Buat sistem file dan Kelola titik pemasangan.

  3. Dapatkan alamat titik pemasangan.

    1. Klik ID sistem file. Di panel navigasi kiri, klik Mount Targets.

    2. Di bagian Mount Target, pastikan statusnya Available dan salin alamat titik pemasangan.

Langkah 2: Buat StorageClass

kubectl

  1. Buat file bernama alicloud-nas-sharepath.yaml dengan manifes YAML berikut dan modifikasi 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. Kami merekomendasikan penggunaan NFSv3. NAS Ekstrem hanya mendukung NFSv3.

    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 akan digunakan. Artinya, setiap PV akan memetakan ke direktori NAS yang sama.

    server

    Alamat titik pemasangan dan subdirektori sistem file NAS yang akan dipasang. Formatnya adalah <alamat titik pemasangan NAS>:<direktori pemasangan>.

    • Jika Anda tidak menentukan subdirektori, direktori root / akan 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 /, sedangkan untuk sistem file NAS Ekstrem adalah /share. Saat 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 CSI NAS Alibaba Cloud digunakan.

    reclaimPolicy

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

  2. Buat StorageClass.

    kubectl create -f alicloud-nas-sharepath.yaml

Konsol

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

  2. Di halaman Clusters, temukan kluster yang Anda inginkan dan klik namanya. Di panel kiri, pilih Volumes > StorageClasses.

  3. Di halaman StorageClasses, klik Create.

  4. Pada kotak dialog yang muncul, konfigurasi parameter dan klik OK.

    Tabel berikut menjelaskan konfigurasi utama:

    Konfigurasi

    Deskripsi

    Contoh

    Name

    Nama StorageClass. Lihat UI untuk persyaratan format.

    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 akan 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 memasang subdirektori pada sistem file NAS Ekstrem, path harus dimulai dengan /share, seperti /share/data.

    /sharepath

    Reclaim Policy

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

    Retain

    Mount Options

    Opsi pemasangan untuk volume NAS, termasuk versi protokol NFS. Kami merekomendasikan penggunaan NFSv3. NAS Ekstrem hanya mendukung NFSv3.

    Pertahankan nilai default

    Setelah StorageClass dibuat, Anda dapat melihatnya di daftar Storage Classes.

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. Modifikasi manifes 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-nya adalah ReadWriteMany. ReadWriteOnce dan ReadOnlyMany juga didukung.

    storageClassName

    Nama StorageClass yang akan diikat.

    storage

    Kapasitas volume yang ingin Anda minta.

    Penting
    • Secara default, kapasitas sebenarnya yang tersedia untuk volume NAS tidak dibatasi oleh konfigurasi ini. Kapasitas ditentukan oleh spesifikasi sistem file NAS. Untuk informasi lebih lanjut, lihat NAS tujuan umum dan NAS Ekstrem.

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

  3. Buat PVC.

    kubectl create -f pvc.yaml
  4. Verifikasi bahwa PV telah dibuat dan diikat ke PVC.

    kubectl get pv

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

Konsol

  1. Buat namespace ns1 dan ns2. Untuk detailnya, lihat Buat namespace.

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

  3. Buat PVC di namespace ns1.

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

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

      Konfigurasi

      Deskripsi

      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 yang telah Anda buat.

      alicloud-nas-sharepath

      Capacity

      Kapasitas volume.

      20Gi

      Access Mode

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

      ReadWriteMany

  4. Ulangi langkah-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 akan berbagi direktori NAS yang didefinisikan dalam StorageClass.

kubectl

  1. Simpan konten YAML berikut sebagai nginx-ns1.yaml dan nginx-ns2.yaml masing-masing, dan modifikasi sesuai kebutuhan.

    Konfigurasi berikut dalam nginx-ns1.yaml dan nginx-ns2.yaml sama, kecuali nilai metadata.namespace. Kedua aplikasi diikat 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 dua Penyebaran tersebut.

    kubectl create -f nginx-ns1.yaml -f nginx-ns2.yaml
  3. Verifikasi bahwa pod sedang berjalan.

    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

Konsol

  1. Di panel navigasi kiri halaman detail kluster, buka 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 lebih lanjut, lihat Buat beban kerja tanpa status (Deployment).

      Langkah 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 pod.

      2

      Container

      Image Name

      Alamat citra yang digunakan untuk menyebar aplikasi.

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

      Required Resources

      Sumber daya vCPU dan memori yang diperlukan.

      0.25 vCPU, 512 MiB

      Volume

      Klik Add PVC dan konfigurasi parameter.

      • Mount Source: Pilih PVC yang telah 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-langkah sebelumnya untuk membuat Deployment lain di namespace ns2 dan pasang PVC yang sesuai.

  4. Kembali ke halaman Deployments. Di namespace ns1 dan ns2, lihat status dua Deployment tersebut. Pastikan pod sedang berjalan dan PVC yang sesuai dipasang.

Pasang menggunakan metode filesystem

Jika aplikasi Anda perlu membuat dan menghapus sistem file NAS serta titik pemasangan secara dinamis, gunakan metode filesystem untuk memasang volume NAS. Pod yang menggunakan volume NAS bertipe filesystem hanya dapat membuat satu sistem file dan satu titik pemasangan.

Penting

Secara default, saat volume NAS bertipe filesystem yang disediakan secara dinamis dihapus, sistem file dan titik pemasangan dipertahankan. Untuk melepas sistem file NAS dan titik pemasangan secara bersamaan dengan pelepasan sumber daya PV, Anda harus mengatur reclaimPolicy ke Delete dan deleteVolume ke true dalam StorageClass.

Langkah 1: Berikan izin RAM (Diperlukan hanya untuk kluster khusus ACK)

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 kluster khusus ACK.

Berikan izin ini menggunakan kebijakan RAM dengan set tindakan minimum berikut:

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

Berikan izin dengan salah satu cara berikut:

  • Edit kebijakan kustom dari Peran RAM Master untuk kluster khusus ACK untuk menambahkan izin terkait NAS yang ditunjukkan di atas. Untuk informasi lebih lanjut, lihat Ubah dokumen dan deskripsi kebijakan kustom.自定义授权

  • Buat pengguna RAM, berikan kebijakan RAM yang dijelaskan di atas, hasilkan AccessKey, dan tambahkan AccessKey ke variabel env dari 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. Modifikasi manifes 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. Kami merekomendasikan penggunaan NFSv3. NAS Ekstrem hanya mendukung NFSv3.

    parameters

    volumeAs

    Metode pemasangan. Dalam contoh ini, nilainya diatur ke filesystem untuk membuat sistem file NAS secara otomatis. Satu PV sesuai 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)

      • Capacity

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

      • standard (default)

      • advance

    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-nya adalah DEFAULT_VPC_GROUP_NAME.

    deleteVolume

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

    provisioner

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

    reclaimPolicy

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

  2. Buat StorageClass.

    kubectl create -f alicloud-nas-fs.yaml

Langkah 3: Buat PVC

  1. Modifikasi manifes 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. Modifikasi manifes 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 dalam contoh sebelumnya semuanya memasang sistem file NAS yang sama. Anda dapat menggunakan langkah-langkah berikut untuk memverifikasi perilakunya:

  • Untuk memverifikasi penyimpanan bersama, buat file dari satu pod dan pastikan file tersebut terlihat dari pod kedua.

  • Untuk memverifikasi persistensi, mulai ulang Deployment dan periksa apakah file tersebut masih ada setelah pod baru berjalan.

  1. Lihat informasi pod.

    kubectl get pod | grep nas-test

    Hasil contoh:

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

    1. Buat file di pod.

      Dalam contoh ini, pod nas-test-*****a digunakan:

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

      Dalam contoh ini, pod nas-test-*****b digunakan:

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

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

      test.txt
  3. Verifikasi penyimpanan persisten.

    1. Buat ulang Deployment.

      kubectl rollout restart deploy nas-test
    2. Tunggu hingga pod dibuat ulang.

      kubectl get pod | grep nas-test

      Hasil contoh:

      nas-test-*****c   1/1     Running   0          67s
      nas-test-*****d   1/1     Running   0          49s
    3. Masuk ke pod yang dibuat ulang dan periksa apakah file tersebut masih ada di sistem file.

      Dalam contoh ini, pod nas-test-*****c digunakan:

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

      Output berikut menunjukkan bahwa file tersebut masih ada di sistem file NAS dan dapat diakses dari direktori pemasangan di pod yang dibuat ulang.

      test.txt

FAQ

Jika Anda mengalami masalah saat memasang atau menggunakan volume NAS, lihat:

Referensi