Apsara File Storage NAS (NAS) adalah sistem file terdistribusi yang menyediakan akses bersama di berbagai pod. Gunakan volume persisten NAS ketika aplikasi Anda memerlukan penyimpanan bersama berkinerja tinggi dan persisten—misalnya, ketika beberapa pod harus membaca dan menulis data yang sama secara bersamaan.
Tersedia tiga pendekatan penyediaan:
| Approach | When to use |
|---|---|
| Static provisioning | Anda sudah memiliki sistem file NAS dan ingin mereferensikannya langsung melalui anotasi PVC. |
| Dynamic provisioning | Anda belum memiliki sistem file NAS. StorageClass mendefinisikan konfigurasi dan sistem akan membuat sistem file tersebut secara otomatis saat PVC dibuat. |
| Inline NFS volume | Anda ingin memasang sistem file NAS langsung dalam spesifikasi pod, tanpa PVC atau PV. Lebih sederhana dikonfigurasi karena tidak perlu mengelola PVC dan PV. |
Untuk sebagian besar kasus penggunaan, penyediaan statis atau dinamis direkomendasikan karena memisahkan konfigurasi penyimpanan dari penerapan aplikasi.
Prasyarat
Sebelum memulai, pastikan bahwa:
-
Komponen managed-csiprovisioner telah dipasang di kluster ACS Anda. Untuk memeriksa, buka halaman manajemen kluster Anda di ACS console, lalu pilih Operations > Add-ons dan cari managed-csiprovisioner pada tab Storage.
Batasan
| Limitation | Details |
|---|---|
| Protocol | Hanya NFSv3 yang didukung. Pemasangan protokol SMB tidak didukung. |
| Network scope | Sistem file NAS hanya dapat dipasang ke pod dalam VPC yang sama. Pemasangan lintas-VPC tidak didukung. Jika Anda memerlukan akses lintas-zona dalam VPC yang sama, pemasangan lintas-zona didukung. |
Catatan penggunaan
-
Penulisan bersama memerlukan sinkronisasi di tingkat aplikasi. NAS menyediakan penyimpanan bersama—satu volume NAS dapat dipasang ke beberapa pod secara bersamaan. Jika beberapa pod menulis ke data yang sama pada waktu yang sama, aplikasi Anda harus menangani sinkronisasi data.
-
Jangan mengatur `securityContext.fsgroup`. Direktori root
/dari sistem file NAS tidak mendukung perubahan izin, Pemilik, atau kelompok. Mengaturfsgroupdalam spesifikasi pod menyebabkan proses pemasangan gagal. -
Jangan hapus titik pemasangan saat sedang digunakan. Menghapus titik pemasangan aktif dapat menyebabkan sistem operasi node berhenti merespons.
Gunakan sistem file NAS yang ada sebagai volume persisten
Gunakan penyediaan statis ketika Anda sudah memiliki sistem file NAS. Sistem akan membuat volume persisten statis (PV) berdasarkan alamat titik pemasangan dalam anotasi PVC dan mengikat PVC tersebut secara otomatis.
Langkah 1: Dapatkan informasi sistem file NAS
-
Dapatkan ID VPC dan ID vSwitch yang digunakan oleh pod ACS Anda. Jalankan perintah berikut untuk membaca ConfigMap acs-profile:
-
Masuk ke ACS console.
-
Pada halaman Clusters, klik nama kluster.
-
Di panel navigasi kiri, pilih Configurations > ConfigMaps.
-
Atur namespace ke kube-system, temukan acs-profile, lalu klik Edit YAML.
-
Salin nilai
vpcIddanvSwitchIds.
kubectl get cm -n kube-system acs-profile -o yamlTemukan bidang
vpcIddanvSwitchIdsdalam output. Atau, dapatkan nilai-nilai ini dari ACS console: -
-
Verifikasi bahwa sistem file NAS Anda kompatibel dan dapatkan alamat titik pemasangannya.
-
Masuk ke NAS console dan klik File System List.
-
Temukan sistem file NAS Anda dan konfirmasi hal berikut:

-
Sistem file NAS berada di wilayah yang sama dengan kluster ACS. Sistem file NAS tidak dapat dipasang lintas wilayah atau lintas VPC.
-
Sistem file NAS menggunakan protokol NFS. SMB tidak didukung.
-
Untuk kinerja terbaik, sistem file NAS berada di zona yang sama dengan pod Anda. Dalam VPC yang sama, pemasangan lintas-zona didukung.
-
-
Dapatkan alamat titik pemasangan:
-
Klik ID sistem file untuk membuka halaman detail sistem file.
-
Di panel navigasi kiri, klik Mount Targets.
-
Konfirmasi bahwa titik pemasangan memenuhi persyaratan berikut, lalu salin alamatnya: > Note: Sistem file NAS tujuan umum memiliki titik pemasangan yang dibuat secara otomatis. Untuk sistem file NAS Ekstrem, Anda harus membuat titik pemasangan secara manual. Jika tidak ada titik pemasangan yang sesuai, lihat Manage mount targets.

-
Titik pemasangan berada di VPC yang sama dengan pod Anda. Jika VPC berbeda, pemasangan akan gagal.
-
Untuk kinerja terbaik, vSwitch titik pemasangan sesuai dengan vSwitch yang digunakan oleh pod Anda.
-
Status titik pemasangan adalah Available.
-
-
-
Langkah 2: Buat PVC
kubectl
-
Simpan konten berikut sebagai
nas-pvc.yaml. Ganti*****-mw*.cn-shanghai.nas.aliyuncs.comdengan alamat titik pemasangan aktual Anda.PentingSaat Anda menerapkan PVC ini, sistem pertama-tama akan membuat PV statis berdasarkan konfigurasi NAS dalam
annotations, lalu membuat PVC dan mengikatnya ke PV tersebut.Parameter Description csi.alibabacloud.com/mountpointDirektori NAS yang akan dipasang. Masukkan alamat titik pemasangan (misalnya, **-.region.nas.aliyuncs.com`) untuk memasang direktori root (`/`). Tambahkan jalur subdirektori (misalnya, `-**.region.nas.aliyuncs.com:/dir) untuk memasang subdirektori tertentu. Subdirektori akan dibuat secara otomatis jika belum ada.csi.alibabacloud.com/mount-optionsOpsi pemasangan. Gunakan nolock,tcp,noresvport.accessModesMode akses. ReadWriteManymemungkinkan beberapa pod membaca dan menulis secara bersamaan.storageKapasitas penyimpanan yang dialokasikan ke pod. kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-pvc annotations: csi.alibabacloud.com/mountpoint: *******-mw***.cn-shanghai.nas.aliyuncs.com csi.alibabacloud.com/mount-options: nolock,tcp,noresvport spec: accessModes: - ReadWriteMany resources: requests: storage: 20Gi storageClassName: alibaba-cloud-nasParameter utama:
-
Buat PVC:
kubectl create -f nas-pvc.yaml -
Verifikasi PV telah dibuat:
kubectl get pvcOutput yang diharapkan:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE nas-ea7a0b6a-bec2-4e56-b767-47222d3a**** 20Gi RWX Retain Bound default/nas-pvc alibaba-cloud-nas 1m58s -
Verifikasi PVC terikat ke PV:
kubectl get pvcOutput yang diharapkan:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE nas-pvc Bound nas-ea7a0b6a-bec2-4e56-b767-47222d3a**** 20Gi RWX alibaba-cloud-nas <unset> 2m14s
Console
-
Masuk ke ACS console.
-
Pada halaman Clusters, klik nama kluster.
-
Di panel navigasi kiri, pilih Volumes > Persistent Volume Claims.
-
Klik Create.
-
Konfigurasikan parameter berikut, lalu klik Create. Setelah PVC dibuat, PVC tersebut akan muncul di halaman Persistent Volume Claims dengan status Bound, terhubung ke PV yang dibuat secara otomatis.
Parameter Description Example PVC Type Pilih NAS. NAS Name Nama untuk PVC. nas-pvc Allocation Mode Pilih Use Mount Target Domain Name. Create with Mount Target Domain Name Volume Plug-in CSI dipilih secara default. CSI Capacity Kapasitas penyimpanan yang dialokasikan ke pod. 20 GiB Access Mode ReadWriteManyatauReadWriteOnce.ReadWriteMany Mount Target Domain Name Direktori NAS yang akan dipasang. Masukkan alamat titik pemasangan untuk memasang direktori root ( /), atau tambahkan jalur subdirektori (misalnya,**-**.region.nas.aliyuncs.com:/dir) untuk memasang subdirektori. Subdirektori akan dibuat secara otomatis jika belum ada.350514**-mw*.cn-shanghai.nas.aliyuncs.com

Langkah 3: Buat deployment dan pasang volume NAS
kubectl
-
Simpan konten berikut sebagai
nas-test.yaml. Deployment ini membuat dua pod, keduanya memasang PVCnas-pvcke/data.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: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest ports: - containerPort: 80 volumeMounts: - name: pvc-nas mountPath: /data volumes: - name: pvc-nas persistentVolumeClaim: claimName: nas-pvc -
Buat deployment:
kubectl create -f nas-test.yaml -
Verifikasi kedua pod berjalan:
kubectl get pod | grep nas-testOutput yang diharapkan:
nas-test-****-***a 1/1 Running 0 40s nas-test-****-***b 1/1 Running 0 40s -
Verifikasi sistem file NAS telah dipasang:
kubectl exec nas-test-****-***a -- df -h /dataOutput yang diharapkan:
Filesystem Size Used Avail Use% Mounted on 350514*****-mw***.cn-shanghai.nas.aliyuncs.com:/ 10P 0 10P 0% /data
Console
-
Di panel navigasi kiri halaman manajemen kluster, pilih Workloads > Deployments.
-
Klik Create from Image.
-
Konfigurasikan parameter utama berikut, lalu klik Create. Untuk parameter lainnya, gunakan nilai default. Untuk informasi lebih lanjut, lihat Create a stateless application using a deployment.
Configuration page Parameter Description Example Basic Information Name Nama untuk deployment. nas-test Basic Information Replicas Jumlah replika pod. 2 Container Image Name Alamat image kontainer. registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latestContainer Required Resources Sumber daya vCPU dan memori. 0.25 vCPU, 0.5 GiB Volume — Klik Add PVC. Atur Mount Source ke PVC yang telah Anda buat dan Container Path ke jalur pemasangan. Mount Source: nas-pvc; Container Path: /data -
Verifikasi deployment:
-
Pada halaman Deployments, klik nama deployment.
-
Pada tab Pods, pastikan semua pod menunjukkan status Running.
-
Buat sistem file NAS baru sebagai volume persisten
Gunakan penyediaan dinamis ketika Anda belum memiliki sistem file NAS yang ada. StorageClass mendefinisikan konfigurasi sistem file, dan sistem akan membuatnya secara otomatis saat klaim volume persisten (PVC) dibuat.
Jenis sistem file NAS, kelas penyimpanan, dan dukungan protokol bervariasi berdasarkan wilayah dan zona. Sebelum mengonfigurasi StorageClass, periksa wilayah dan zona yang didukung untuk jenis NAS yang Anda pilih:
-
Spesifikasi, kinerja, penagihan, dan wilayah yang didukung: General-purpose NAS file systems dan Extreme NAS file systems
-
Batas keterhubungan mount dan jenis protokol: Batasan
Langkah 1: Buat StorageClass
-
Simpan konten berikut sebagai
nas-sc.yaml, ganti nilai placeholder dengan nilai untuk kluster ACS Anda. Untuk mendapatkan ID VPC dan ID vSwitch, jalankan:Parameter Required Description volumeAsRequired Harus filesystem. Setiap volume NAS berkorespondensi dengan satu sistem file NAS.fileSystemTypeRequired standard(default) untuk NAS tujuan umum, atauextremeuntuk NAS Ekstrem.storageTypeRequired Kelas penyimpanan dalam jenis sistem file. NAS tujuan umum: Performance(default, komputasi-teroptimalkan) atauCapacity(penyimpanan-teroptimalkan). NAS Ekstrem:standard(default, medium) atauadvanced.regionIdRequired Wilayah sistem file NAS. Harus sesuai dengan wilayah kluster ACS Anda. zoneIdRequired Zona sistem file NAS. Pilih zona berdasarkan vSwitch yang digunakan oleh pod Anda. Pemasangan lintas-zona dalam VPC yang sama didukung, tetapi menggunakan zona yang sama memberikan kinerja lebih baik. vpcId,vSwitchIdRequired ID VPC dan vSwitch untuk titik pemasangan NAS. Harus sesuai dengan VPC dan vSwitch yang digunakan oleh pod Anda. accessGroupNameOptional Kelompok izin untuk titik pemasangan. Default-nya adalah DEFAULT_VPC_GROUP_NAME.provisionerRequired Harus nasplugin.csi.alibabacloud.com.reclaimPolicyRequired Hanya Retainyang didukung. Saat PV dihapus, sistem file NAS dan titik pemasangan tetap dipertahankan.kubectl get cm -n kube-system acs-profile -o yamlapiVersion: 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-shanghai zoneId: cn-shanghai-e vpcId: "vpc-2ze2fxn6popm8c2mzm****" vSwitchId: "vsw-2zwdg25a2b4y5juy****" accessGroupName: DEFAULT_VPC_GROUP_NAME deleteVolume: "false" provisioner: nasplugin.csi.alibabacloud.com reclaimPolicy: RetainParameter utama:
-
Buat StorageClass:
kubectl create -f nas-sc.yaml -
Verifikasi StorageClass telah dibuat:
kubectl get scOutput yang diharapkan:
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE alicloud-nas-fs nasplugin.csi.alibabacloud.com Retain Immediate false 13m ......
Langkah 2: Buat PVC
-
Simpan konten berikut sebagai
nas-pvc-fs.yaml.Parameter Description accessModesMode akses. storageClassNameHarus sesuai dengan nama StorageClass yang telah Anda buat. storageKapasitas penyimpanan untuk volume NAS. Untuk sistem file NAS Ekstrem, nilai minimum adalah 100 GiB. Mengatur nilai lebih kecil mencegah pembuatan PV. kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-pvc-fs spec: accessModes: - ReadWriteMany storageClassName: alicloud-nas-fs resources: requests: storage: 20GiBidang utama:
-
Buat PVC:
kubectl create -f nas-pvc-fs.yaml -
Verifikasi PVC terikat:
kubectl get pvcOutput yang diharapkan:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE nas-pvc-fs Bound nas-04a730ba-010d-4fb1-9043-476d8c38**** 20Gi RWX alicloud-nas-fs <unset> 14sPVC terikat ke PV yang disediakan secara otomatis. Sistem file NAS yang sesuai terlihat di NAS console.
Langkah 3: Buat deployment dan pasang volume NAS
-
Simpan konten berikut sebagai
nas-test-fs.yaml. Deployment ini membuat dua pod, keduanya memasang PVCnas-pvc-fske/data.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: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest ports: - containerPort: 80 volumeMounts: - name: nfs-nas mountPath: /data volumes: - name: nfs-nas nfs: server: file-system-id.region.nas.aliyuncs.com # Alamat target pemasangan. Contoh: 7bexxxxxx-xxxx.ap-southeast-1.nas.aliyuncs.com path: / # Jalur direktori dalam sistem file NAS. Direktori tersebut harus merupakan direktori yang sudah ada atau direktori root. Direktori root untuk sistem file NAS tujuan umum adalah "/". Direktori root untuk sistem file NAS Ekstrem adalah "/share". -
Buat deployment:
kubectl create -f nas-test-fs.yaml -
Verifikasi kedua pod berjalan:
kubectl get pod | grep nas-testOutput yang diharapkan:
nas-test-****-***a 1/1 Running 0 40s nas-test-****-***b 1/1 Running 0 40s -
Verifikasi sistem file NAS telah dipasang:
kubectl exec nas-test-****-***a -- df -h /dataOutput yang diharapkan:
Filesystem Size Used Avail Use% Mounted on 350514*****-mw***.cn-shanghai.nas.aliyuncs.com:/ 10P 0 10P 0% /data
Pasang sistem file NAS yang ada menggunakan volume NFS
Gunakan volume NFS inline ketika Anda ingin memasang sistem file NAS langsung dalam spesifikasi pod, tanpa membuat PVC atau PV. Pendekatan ini memerlukan lebih sedikit sumber daya untuk dikonfigurasi.
Langkah 1: Dapatkan alamat titik pemasangan NAS
Ikuti langkah-langkah dalam Langkah 1: Dapatkan informasi sistem file NAS untuk mendapatkan alamat titik pemasangan.
Langkah 2: Buat deployment
-
Simpan konten berikut sebagai
nas-test-nfs.yaml, ganti nilaiserverdengan alamat titik pemasangan aktual Anda. Deployment ini membuat dua pod, keduanya memasang sistem file NAS ke/datamenggunakan volume NFS inline.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: registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest ports: - containerPort: 80 volumeMounts: - name: nfs-nas mountPath: /data volumes: - name: nfs-nas nfs: server: file-system-id.region.nas.aliyuncs.com # Alamat titik pemasangan. Contoh: 7bexxxxxx-xxxx.ap-southeast-1.nas.aliyuncs.com path: / # Jalur direktori dalam sistem file NAS. Direktori harus merupakan direktori yang sudah ada atau direktori root. Direktori root untuk sistem file NAS tujuan umum adalah "/". Direktori root untuk sistem file NAS Ekstrem adalah "/share". -
Buat deployment:
kubectl create -f nas-test-nfs.yaml -
Verifikasi kedua pod berjalan:
kubectl get pod | grep nas-testOutput yang diharapkan:
nas-test-****-***a 1/1 Running 0 40s nas-test-****-***b 1/1 Running 0 40s -
Verifikasi sistem file NAS telah dipasang:
kubectl exec nas-test-****-***a -- df -h /dataOutput yang diharapkan:
Filesystem Size Used Avail Use% Mounted on 350514*****-mw***.cn-shanghai.nas.aliyuncs.com:/ 10P 0 10P 0% /data
Verifikasi penyimpanan bersama dan persistensi data
Deployment dalam contoh di atas membuat dua pod yang berbagi sistem file NAS yang sama. Gunakan langkah-langkah berikut untuk memastikan bahwa penyimpanan bersama dan persistensi data berfungsi dengan benar.
Verifikasi penyimpanan bersama
-
Dapatkan nama pod:
kubectl get pod | grep nas-testContoh output:
nas-test-****-***a 1/1 Running 0 40s nas-test-****-***b 1/1 Running 0 40s -
Buat file dari salah satu pod:
test.txt -
Baca file dari pod lainnya:
kubectl exec nas-test-****-***b -- ls /dataOutput yang diharapkan:
test.txttest.txtterlihat dari kedua pod, mengonfirmasi bahwa penyimpanan bersama berfungsi.
Verifikasi persistensi data
-
Restart deployment untuk membuat pod baru:
kubectl rollout restart deploy nas-test -
Tunggu hingga pod baru siap:
kubectl get pod | grep nas-testContoh output:
nas-test-****-***c 1/1 Running 0 67s nas-test-****-***d 1/1 Running 0 49s -
Baca file dari pod baru:
kubectl exec nas-test-****-***c -- ls /dataOutput yang diharapkan:
test.txttest.txtmasih ada setelah pod diganti, mengonfirmasi bahwa sistem file NAS mempertahankan data meskipun pod direstart.