Untuk aplikasi yang memerlukan data bersama dan performa I/O tinggi, Anda dapat menggunakan Apsara File Storage NAS sebagai volume persisten (PV). Topik ini menjelaskan cara memasang volume NAS ke aplikasi serta memverifikasi akses bersama dan persistensi datanya.
Latar Belakang
NAS adalah sistem file terdistribusi yang menyediakan akses bersama, skalabilitas elastis, keandalan tinggi, dan performa tinggi. Sistem ini cocok untuk aplikasi yang memerlukan data bersama dan performa I/O tinggi. Untuk informasi selengkapnya, lihat Ikhtisar penyimpanan.
-
Untuk informasi lebih lanjut mengenai spesifikasi penyimpanan, performa, penagihan, serta wilayah dan zona yang didukung, lihat General-purpose NAS dan Extreme NAS.
-
General-purpose NAS dan Extreme NAS memiliki batasan berbeda terkait konektivitas pemasangan, jumlah sistem file, dan jenis protokol. Untuk informasi selengkapnya, lihat Batasan.
Anda dapat memasang dan menggunakan volume NAS dengan salah satu cara berikut:
-
Jika Anda memiliki sistem file NAS yang sudah ada, Anda dapat langsung memasang dan membagikannya. Untuk informasi selengkapnya, lihat Gunakan sistem file NAS yang sudah ada sebagai volume.
-
Jika Anda belum memiliki sistem file NAS, Anda dapat membuat dan memasangnya secara otomatis menggunakan StorageClass. Untuk informasi selengkapnya, lihat Buat sistem file NAS baru sebagai volume.
Prasyarat
Komponen managed-csiprovisioner telah diinstal di kluster ACS.
Buka halaman manajemen kluster ACS di Konsol ACS. Di panel navigasi sebelah kiri halaman manajemen kluster, pilih . Di tab Storage, Anda dapat memeriksa apakah managed-csiprovisioner telah diinstal.
Batasan
-
Sistem file NAS tidak dapat dipasang menggunakan protokol SMB.
-
Sistem file NAS hanya dapat dipasang ke Pod dalam VPC yang sama.
CatatanSistem file NAS dapat dipasang lintas zona dalam VPC yang sama.
-
Sistem file NAS hanya dapat dipasang menggunakan protokol NFSv3.
Pertimbangan
-
NAS menyediakan penyimpanan bersama. Satu volume NAS dapat dipasang ke beberapa Pod. Jika beberapa Pod secara bersamaan memodifikasi data yang sama, aplikasi Anda harus menangani sinkronisasi data.
-
Saat memasang volume NAS, jangan konfigurasi
securityContext.fsgroupdi file YAML aplikasi. Jika tidak, volume mungkin gagal dipasang.CatatanAnda tidak dapat mengubah izin, pemilik, atau kelompok direktori root
/dari sistem file NAS. -
Setelah memasang volume NAS, jangan hapus titik pemasangannya. Jika tidak, sistem operasi mungkin berhenti merespons.
Gunakan sistem file NAS yang sudah ada
Langkah 1: Dapatkan informasi sistem file NAS
-
Dapatkan ID VPC dan ID vSwitch yang digunakan oleh Pod ACS.
CatatanAnda dapat memperoleh informasi ini dari konsol. Atau, jalankan perintah
kubectl get cm -n kube-system acs-profile -o yamluntuk melihat file YAML ConfigMap acs-profile. ID VPC dan ID vSwitch ditentukan di bidangvpcIddanvSwitchIds.-
Login ke Konsol ACS.
-
Di halaman Clusters, klik nama kluster untuk membuka halaman manajemen kluster.
-
Di panel navigasi sebelah kiri, pilih .
-
Di bagian atas halaman ConfigMap, ubah namespace menjadi kube-system. Lalu, temukan acs-profile dan klik Edit YAML.
-
Ambil ID VPC dan ID vSwitch dari bidang
vpcIddanvSwitchIds.
-
-
Verifikasi bahwa sistem file NAS yang sudah ada memenuhi persyaratan dan dapatkan alamat titik pemasangannya.
-
Login ke Konsol NAS. Di panel navigasi sebelah kiri, klik File System List.
-
Temukan sistem file NAS target dan verifikasi bahwa wilayah, zona, dan jenis protokolnya memenuhi persyaratan.
-
NAS tidak mendukung pemasangan lintas-VPC sehingga tidak dapat digunakan lintas wilayah. Pastikan sistem file NAS berada di wilayah yang sama dengan kluster ACS Anda.
-
Dalam VPC yang sama, sistem file NAS dapat dipasang lintas zona. Namun, untuk performa optimal, kami merekomendasikan agar sistem file NAS dan Pod di kluster ACS berada di zona yang sama.
-
Verifikasi bahwa jenis protokol sistem file NAS adalah NFS. Anda tidak dapat memasang sistem file NAS yang menggunakan protokol SMB.
-
-
Verifikasi bahwa titik pemasangan memenuhi persyaratan dan dapatkan alamatnya.
-
Klik ID sistem file.
-
Di halaman detail sistem file, klik Mount Targets di panel navigasi sebelah kiri.
-
Di area Mount Target, verifikasi bahwa titik pemasangan yang ada memenuhi persyaratan, lalu dapatkan alamat titik pemasangannya.
Catatan-
Titik pemasangan dibuat secara otomatis saat Anda membuat sistem file NAS tujuan umum. Untuk sistem file NAS Ekstrem, Anda harus membuat titik pemasangan secara manual.
-
Jika titik pemasangan yang ada tidak memenuhi persyaratan, Anda dapat membuat yang baru. Untuk informasi selengkapnya, lihat Kelola titik pemasangan.
-
VPC titik pemasangan harus sama dengan VPC kluster ACS. Jika tidak, pemasangan akan gagal.
-
Untuk performa optimal, kami merekomendasikan agar titik pemasangan dan Pod di kluster ACS menggunakan vSwitch yang sama.
-
Status titik pemasangan harus Available.
-
-
-
Langkah 2: Buat StorageClass
-
Modifikasi konten YAML berikut berdasarkan deskripsi parameter, lalu simpan sebagai nas-sc.yaml.
apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: alicloud-nas-subpath mountOptions: - nolock,tcp,noresvport - vers=3 parameters: volumeAs: subpath server: "*******-mw***.cn-shanghai.nas.aliyuncs.com:/csi" provisioner: nasplugin.csi.alibabacloud.com reclaimPolicy: RetainDeskripsi parameter:
Parameter
Deskripsi
volumeAsMode provisioning. Tetapkan ke
subpathuntuk membuat setiap volume persisten (PV) sebagai subdirektori. Setiap PV sesuai dengan subdirektori sistem file NAS.serverAlamat titik pemasangan sistem file NAS, dalam format
alamat-titik-pemasangan:jalur, di manajaluradalah subdirektori NAS yang ingin Anda pasang.-
Jika Anda tidak menentukan jalur, direktori root dipasang secara default.
-
Jika direktori tersebut tidak ada di sistem file NAS, direktori tersebut akan dibuat secara otomatis lalu dipasang.
Direktori root adalah
/untuk sistem file NAS tujuan umum dan/shareuntuk sistem file NAS Ekstrem.provisionerMenentukan jenis provisioner. Harus diatur ke
nasplugin.csi.alibabacloud.comuntuk menggunakan Plugin CSI NAS Alibaba Cloud.reclaimPolicyKebijakan reclaim PV. Hanya
Retainyang didukung, artinya sistem file NAS dan titik pemasangan yang sesuai akan dipertahankan saat Anda menghapus PV. -
Langkah 3: Buat PVC
kubectl
-
Simpan konten berikut sebagai nas-pvc.yaml.
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-pvc annotations: spec: accessModes: - ReadWriteMany resources: requests: storage: 20Gi storageClassName: alicloud-nas-subpathDeskripsi parameter:
Parameter
Deskripsi
accessModesMode akses.
storageKapasitas volume persisten yang akan dibuat.
storageClassNameNama StorageClass yang akan digunakan.
-
Buat PVC.
kubectl create -f nas-pvc.yaml -
Lihat PV.
kubectl get pvOutput menunjukkan bahwa Plugin CSI secara otomatis membuat PV berdasarkan StorageClass dan mengikatnya ke PVC.
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE nas-ea7a0b6a-bec2-4e56-b767-47222d3a**** 20Gi RWX Retain Bound default/nas-pvc alicloud-nas-subpath 1m58s
Konsol
-
Login ke Konsol ACS.
-
Di halaman Clusters, klik nama kluster untuk membuka halaman manajemen kluster.
-
Di panel navigasi sebelah kiri halaman manajemen kluster, pilih .
-
Di halaman Persistent Volume Claims, klik Create.
-
Di kotak dialog, atur parameter lalu klik Create.
Parameter
Deskripsi
Contoh
PVC Type
Pilih NAS.
NAS
Volume Name:
Nama PVC. Masukkan nama kustom. Untuk persyaratan format, lihat prompt di layar.
nas-pvc
Allocation Mode
Pilih Use StorageClass.
Dynamic Provisioning Using StorageClass
Capacity
Kapasitas volume persisten yang akan dibuat.
20Gi
Access Mode
ReadWriteMany dan ReadWriteOnce didukung.
ReadWriteMany
Setelah PVC dibuat, PVC tersebut akan tercantum di halaman Persistent Volume Claims. PVC tersebut diikat ke PV yang dibuat secara otomatis, yaitu volume persisten NAS. Anda dapat melihat detail PV di halaman Persistent Volumes.
Langkah 4: Buat aplikasi dan pasang volumenya
kubectl
-
Buat file bernama nas-test.yaml yang berisi konten berikut.
File YAML berikut membuat Deployment dengan dua Pod. Kedua Pod menggunakan PVC bernama
nas-pvcdan memasang volumenya ke jalur/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 dan pasang volume persisten NAS.
kubectl create -f nas-test.yaml -
Periksa status deployment Pod di Deployment.
kubectl get pod | grep nas-testOutput berikut menunjukkan bahwa dua Pod telah dibuat.
nas-test-****-***a 1/1 Running 0 40s nas-test-****-***b 1/1 Running 0 40s -
Periksa jalur pemasangan.
kubectl exec nas-test-****-***a -- df -h /dataOutput yang diharapkan:
Filesystem Size Used Avail Use% Mounted on 350514*****-mw***.cn-shanghai.nas.aliyuncs.com:/ 1.0P 0 1.0P 0% /dataOutput ini mengonfirmasi bahwa sistem file berhasil dipasang.
Konsol
-
Di panel navigasi sebelah kiri halaman manajemen kluster, pilih .
-
Di halaman Deployments, klik Create from Image.
-
Atur parameter Deployment lalu klik Create.
Tabel berikut menjelaskan parameter utama. Anda dapat mempertahankan nilai default untuk parameter lainnya. Untuk informasi selengkapnya, lihat Buat Deployment tanpa status.
Configuration page
Parameter
Description
Example
Basic Information
Application Name
Nama Deployment. Masukkan nama kustom. Untuk persyaratan format, lihat prompt pada layar.
nas-test
Replicas:
Jumlah replica untuk Deployment.
2
Container
Image Name
Masukkan alamat image yang digunakan untuk men-deploy aplikasi.
registry.cn-hangzhou.aliyuncs.com/acs-sample/nginx:latest
Required Resources
Tetapkan sumber daya vCPU dan memori yang diperlukan.
0,25 vCPU, 0,5 GiB
Volume
Klik Add PVC, lalu atur parameter-parameter berikut.
-
Mount Source: Pilih PVC yang telah Anda buat.
-
Container Path: Masukkan path dalam container tempat Anda ingin memasang sistem file NAS.
-
Mount Source: nas-pvc
-
Container Path: /data
-
-
Periksa status deployment aplikasi.
-
Di halaman Deployments, klik nama aplikasi.
-
Di tab Pods, verifikasi bahwa Pod berada dalam status Running.
-
Buat sistem file NAS sebagai volume
Langkah 1: Buat StorageClass
-
Modifikasi konten YAML berikut berdasarkan deskripsi parameter dan simpan file sebagai nas-sc.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-shanghai zoneId: cn-shanghai-e vpcId: "vpc-2ze2fxn6popm8c2mzm****" vSwitchId: "vsw-2zwdg25a2b4y5juy****" accessGroupName: DEFAULT_VPC_GROUP_NAME deleteVolume: "false" provisioner: nasplugin.csi.alibabacloud.com reclaimPolicy: RetainTabel berikut menjelaskan parameter-parameter tersebut.
PentingDukungan terhadap jenis sistem file NAS dan kelas penyimpanan bervariasi berdasarkan wilayah dan zona ketersediaan. Pastikan wilayah, zona ketersediaan, VPC, dan vSwitch yang Anda pilih untuk sistem file NAS dan titik pemasangannya kompatibel dengan kluster ACS Anda serta VPC dan vSwitch yang digunakan oleh Pod Anda. Untuk informasi selengkapnya, lihat topik berikut:
-
Untuk informasi mengenai kelas penyimpanan, performa, penagihan, serta wilayah dan zona ketersediaan yang didukung untuk berbagai jenis sistem file NAS, lihat General-purpose NAS dan Extreme NAS.
-
General-purpose NAS dan Extreme NAS memiliki batasan berbeda terkait konektivitas pemasangan, jumlah sistem file, dan jenis protokol. Untuk informasi selengkapnya, lihat Batasan.
-
Anda dapat menjalankan perintah
kubectl get cm -n kube-system acs-profile -o yamluntuk melihat YAMLacs-profiledan mendapatkan ID VPC serta ID vSwitch yang digunakan oleh Pod dari bidangvpcIddanvSwitchIds.
Parameter
Deskripsi
volumeAsMenentukan cara provisioning volume. Tetapkan ke
filesystemuntuk membuat sistem file NAS baru secara otomatis untuk setiap volume.fileSystemTypeJenis sistem file NAS.
-
standard(default): General-purpose NAS. Untuk informasi selengkapnya, lihat General-purpose NAS. -
extreme: Extreme NAS. Untuk informasi selengkapnya, lihat Extreme NAS.
storageTypeKelas penyimpanan sistem file NAS.
-
Untuk General-purpose NAS, nilai yang valid adalah:
-
Performance(default): Performance -
Capacity: Capacity
-
-
Untuk Extreme NAS, nilai yang valid adalah:
-
standard(default): Standard -
advanced: Advanced
-
regionIdWilayah tempat sistem file NAS berada. Ini harus sama dengan wilayah kluster ACS Anda.
zoneIdZona ketersediaan tempat sistem file NAS berada. Pilih zona ketersediaan berdasarkan vSwitch yang digunakan oleh Pod di kluster ACS Anda.
CatatanDalam VPC yang sama, sistem file NAS dapat dipasang lintas zona ketersediaan. Untuk performa optimal, kami merekomendasikan agar Anda memilih zona ketersediaan yang sama.
vpcId,vSwitchIdID VPC dan vSwitch untuk titik pemasangan sistem file NAS. Ini harus merupakan ID VPC dan vSwitch yang digunakan oleh Pod di kluster ACS Anda.
accessGroupNameGrup izin titik pemasangan sistem file NAS. Nilai default adalah
DEFAULT_VPC_GROUP_NAME.provisionerProvisioner. Ini harus diatur ke
nasplugin.csi.alibabacloud.com, yang menentukan bahwa plugin CSI NAS Alibaba Cloud digunakan.reclaimPolicyKebijakan reclaim untuk PV. Satu-satunya kebijakan yang didukung adalah
Retain, yang berarti sistem file NAS dan titik pemasangannya yang sesuai akan dipertahankan saat PV dihapus. -
-
Buat StorageClass.
kubectl create -f nas-sc.yaml -
Periksa StorageClass.
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 PersistentVolumeClaim
-
Simpan konten berikut ke file bernama nas-pvc-fs.yaml.
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: nas-pvc-fs spec: accessModes: - ReadWriteMany storageClassName: alicloud-nas-fs resources: requests: storage: 20GiTabel berikut menjelaskan parameter-parameter tersebut.
Parameter
Deskripsi
accessModesMode akses.
storageKapasitas volume NAS yang akan dibuat.
CatatanExtreme NAS memiliki kapasitas minimum 100 GiB. Jika jenis sistem file NAS yang didefinisikan di StorageClass adalah Extreme NAS, nilai
storageharus 100 GiB atau lebih besar. Jika tidak, PersistentVolume yang sesuai tidak dapat dibuat.storageClassNameNama StorageClass yang akan digunakan.
-
Buat PersistentVolumeClaim.
kubectl create -f nas-pvc-fs.yaml -
Periksa PersistentVolumeClaim.
kubectl get pvcOutput menunjukkan bahwa PersistentVolumeClaim diikat ke PersistentVolume yang dibuat secara otomatis. Anda juga dapat melihat sistem file NAS yang sesuai di Konsol NAS.
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> 14s
Langkah 3: Buat aplikasi dan pasang volume NAS
-
Buat file bernama nas-test-fs.yaml dengan konten berikut.
YAML berikut membuat Deployment dengan dua Pod. Kedua Pod meminta penyimpanan dari PersistentVolumeClaim bernama
nas-pvc-fsdan memasang volumenya ke jalur pemasangan/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-fs -
Buat Deployment dan pasang volume NAS.
kubectl create -f nas-test-fs.yaml -
Periksa status deployment Pod di Deployment.
kubectl get pod | grep nas-testOutput berikut menunjukkan bahwa dua Pod telah dibuat.
nas-test-****-***a 1/1 Running 0 40s nas-test-****-***b 1/1 Running 0 40s -
Periksa jalur pemasangan.
kubectl exec nas-test-****-***a -- df -h /dataOutput yang diharapkan:
Filesystem Size Used Avail Use% Mounted on 350514*****-mw***.cn-shanghai.nas.aliyuncs.com:/ 1.0P 0 1.0P 0% /dataOutput ini mengonfirmasi bahwa sistem file berhasil dipasang.
Pasang sistem file NAS yang sudah ada melalui volume NFS
Langkah 1: Dapatkan informasi sistem file NAS
Untuk informasi selengkapnya tentang cara mendapatkan alamat titik pemasangan NAS, lihat Dapatkan informasi sistem file NAS.
Langkah 2: Buat aplikasi dan pasang NAS
-
Buat file bernama
nas-test-nfs.yamldengan konten berikut.YAML ini mendefinisikan deployment dengan dua Pod. Setiap Pod memasang sistem file NAS ke jalur
/datamenggunakan volume bernamanfs-nas.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 sistem file NAS Alibaba Cloud. Ganti dengan nilai aktual Anda. Contoh: 7bexxxxxx-xxxx.ap-southeast-1.nas.aliyuncs.com. path: / # Jalur direktori dalam sistem file NAS. Direktori harus berupa direktori yang sudah ada atau direktori root. Direktori root sistem file NAS tujuan umum adalah "/", sedangkan direktori root sistem file NAS Ekstrem adalah "/share". -
Buat deployment dan pasang volume NAS.
kubectl create -f nas-test-nfs.yaml -
Periksa status deployment Pod di Deployment.
kubectl get pod | grep nas-testOutput berikut menunjukkan bahwa dua Pod telah dibuat.
nas-test-****-***a 1/1 Running 0 40s nas-test-****-***b 1/1 Running 0 40s -
Periksa jalur pemasangan.
kubectl exec nas-test-****-***a -- df -h /dataOutput yang diharapkan:
Filesystem Size Used Avail Use% Mounted on 350514*****-mw***.cn-shanghai.nas.aliyuncs.com:/ 1.0P 0 1.0P 0% /dataOutput ini mengonfirmasi bahwa sistem file berhasil dipasang.
Verifikasi penyimpanan bersama dan persisten
Deployment yang dibuat pada contoh sebelumnya berisi dua Pod yang memasang sistem file NAS yang sama. Verifikasi pengaturan ini sebagai berikut:
-
Buat file di satu Pod dan lihat di Pod lain untuk memverifikasi penyimpanan bersama.
-
Restart deployment dan periksa apakah data tetap ada di Pod baru untuk memverifikasi penyimpanan persisten.
-
Periksa informasi Pod.
kubectl get pod | grep nas-testContoh output:
nas-test-****-***a 1/1 Running 0 40s nas-test-****-***b 1/1 Running 0 40s -
Verifikasi penyimpanan bersama.
-
Buat file di satu Pod.
Contoh ini menggunakan Pod bernama
nas-test-****-***a:kubectl exec nas-test-****-***a -- touch /data/test.txt -
Lihat file di Pod lain.
Contoh ini menggunakan Pod bernama
nas-test-****-***b:kubectl exec nas-test-****-***b -- ls /dataOutput yang diharapkan menampilkan file baru
test.txt, yang mengonfirmasi bahwa file tersebut dibagikan antar-Pod.test.txt
-
-
Verifikasi penyimpanan persisten.
-
Mulai ulang penerapan.
kubectl rollout restart deploy nas-test -
Periksa Pod dan tunggu hingga Pod baru mulai berjalan.
kubectl get pod | grep nas-testContoh output:
nas-test-****-***c 1/1 Running 0 67s nas-test-****-***d 1/1 Running 0 49s -
Di salah satu Pod baru, verifikasi bahwa data tetap ada di sistem file.
Contoh ini menggunakan Pod bernama
nas-test-****-***c:kubectl exec nas-test-****-***c -- ls /dataOutput mengonfirmasi bahwa data di sistem file NAS tetap ada dan dapat diakses di direktori pemasangan Pod baru.
test.txt
-