Volume NAS menyediakan penyimpanan persisten yang memastikan data tidak hilang saat Pod direplikasi ulang, serta penyimpanan bersama yang memungkinkan beberapa Pod membaca dan menulis data secara bersamaan. ACK mendukung pemasangan sistem file NAS yang sudah ada ke workload Anda sebagai volume statis.
Volume statis mengharuskan Anda terlebih dahulu membuat Persistent Volume (PV) untuk merepresentasikan sumber daya penyimpanan yang sudah ada, seperti sistem file NAS. Aplikasi Anda kemudian membuat Persistent Volume Claim (PVC) untuk mencocokkan dan menggunakan PV tersebut. Metode ini ideal untuk mengelola sumber daya penyimpanan yang sudah ada. Namun, PVC yang terikat tidak mendukung pengubahan ukuran online secara default.
Jika Anda memerlukan pengubahan ukuran volume secara otomatis, lihat Gunakan volume NAS dinamis atau Gunakan CNFS untuk mengubah ukuran volume NAS secara otomatis.
Volume dinamis tidak memerlukan PV yang telah dibuat sebelumnya. Saat aplikasi Anda membuat PVC yang menentukan StorageClass, sistem akan secara otomatis menyediakan volume penyimpanan baru beserta PV-nya sesuai permintaan. Pendekatan ini lebih fleksibel dan mendukung pengubahan ukuran volume.
Cara kerja
Diagram berikut menunjukkan proses pemasangan volume NAS statis di kluster ACK.
|
Prasyarat
Komponen csi-plugin dan csi-provisioner telah diinstal.
Komponen Container Storage Interface (CSI) diinstal secara default. Pastikan Anda tidak meng-uninstall-nya secara manual. Anda dapat memeriksa status instalasinya di halaman . Kami merekomendasikan meningkatkan komponen CSI ke versi terbaru.
Anda memiliki sistem file NAS yang sudah ada dan memenuhi kondisi berikut. Jika belum, buat sistem file baru atau gunakan volume NAS dinamis.
NAS memiliki beberapa batasan terkait konektivitas pemasangan, jumlah sistem file, dan jenis protokol.
Protocol Type: Hanya NFS yang didukung.
VPC: Sistem file NAS harus berada di VPC yang sama dengan kluster. NAS mendukung pemasangan lintas zona ketersediaan, tetapi tidak mendukung pemasangan lintas VPC.
Mount Target: Tambahkan titik pemasangan yang berada di VPC yang sama dengan kluster dan dalam status tersedia. Untuk informasi selengkapnya, lihat Kelola titik pemasangan. Catat alamat titik pemasangan tersebut.
(Opsional) Encryption Type: Jika Anda perlu mengenkripsi data volume penyimpanan, konfigurasikan jenis enkripsi saat membuat sistem file NAS.
Catatan penggunaan
Jangan hapus titik pemasangan: Selama volume sedang digunakan, jangan hapus titik pemasangan yang sesuai di konsol NAS. Melakukannya dapat menyebabkan pengecualian I/O pada node.
Penulisan konkuren: NAS adalah sistem penyimpanan bersama. Saat beberapa Pod memasang volume yang sama, aplikasi Anda harus menangani masalah konsistensi data yang mungkin timbul akibat penulisan konkuren.
Untuk informasi selengkapnya tentang batasan penulisan konkuren NAS, lihat Bagaimana cara mencegah pengecualian yang mungkin terjadi ketika beberapa proses atau klien menulis ke file log yang sama secara bersamaan? dan FAQ tentang akses baca dan tulis ke file.
Kinerja pemasangan: Jika Anda mengonfigurasi
securityContext.fsgroupdi aplikasi Anda, kubelet menjalankan operasichmodatauchownsecara rekursif setelah pemasangan. Hal ini dapat meningkatkan waktu startup Pod secara signifikan.Untuk detail optimasi, lihat FAQ volume NAS.
Langkah 1: Buat PV
Buat PV untuk mendaftarkan sistem file NAS yang sudah ada ke kluster Anda.
Kubectl
Buat file bernama
pv-nas.yamldengan konten berikut.apiVersion: v1 kind: PersistentVolume metadata: # Nama PV. Harus unik dalam kluster. name: pv-nas # Label untuk PV, digunakan untuk mencocokkan dengan PVC nanti. labels: alicloud-pvname: pv-nas spec: capacity: # Deklarasi kapasitas ini hanya sebagai identifikasi. Kapasitas aktual ditentukan oleh sistem file NAS. storage: 5Gi accessModes: - ReadWriteMany # Kebijakan reclaim untuk PV. persistentVolumeReclaimPolicy: Retain csi: # Jenis driver. Nilai ini tetap saat menggunakan volume NAS. driver: nasplugin.csi.alibabacloud.com # Harus identik dengan metadata.name. volumeHandle: pv-nas volumeAttributes: server: "0c47****-mpk25.cn-shenzhen.nas.aliyuncs.com" # Ganti dengan alamat titik pemasangan NAS Anda. # Subdirektori NAS yang akan dipasang. Direktori ini akan dibuat otomatis jika belum ada. path: "/csi" mountOptions: - nolock,tcp,noresvport - vers=3Parameter
Deskripsi
storageDeklarasi kapasitas untuk PV. Nilai ini digunakan untuk mencocokkan dengan PVC dan tidak membatasi kapasitas aktual yang tersedia. Kapasitas maksimum yang tersedia untuk aplikasi Anda adalah total kapasitas sistem file NAS.
Batas kapasitas aktual NAS ditentukan oleh spesifikasinya. Untuk informasi selengkapnya, lihat General-purpose NAS dan Extreme NAS.
accessModesMenentukan mode akses. Nilai yang valid meliputi:
ReadWriteMany(Default): Volume dapat dipasang sebagai read-write oleh banyak node.ReadWriteOnce: Volume dapat dipasang sebagai read-write oleh satu node.ReadOnlyMany: Volume dapat dipasang sebagai read-only oleh banyak node.
persistentVolumeReclaimPolicyKebijakan reclaim untuk PV, yang menentukan apa yang terjadi pada PV dan data NAS backend setelah PVC dihapus.
Retain(Direkomendasikan): Setelah PVC dihapus, PV masuk ke statusReleased. Data NAS backend sepenuhnya dipertahankan dan harus dihapus secara manual.Delete: Jika Anda menghapus PVC, PV yang sesuai juga dihapus. Kebijakan ini harus digunakan dengan parameterarchiveOnDelete. PV statis tidak mendukungarchiveOnDelete. Oleh karena itu, untuk PV statis, meskipun kebijakan ini diatur keDelete, PV dan file NAS tidak benar-benar dihapus saat Anda menghapus PVC.Untuk mengonfigurasi
archiveOnDelete, lihat Gunakan volume NAS dinamis.
driverJenis driver. Ini tetap menjadi
nasplugin.csi.alibabacloud.comsaat menggunakan komponen Alibaba Cloud NAS CSI.volumeHandleIdentifikasi unik untuk PV di sistem penyimpanan backend. Nilai ini harus identik dengan nama PV (nilai
metadata.name). Jika Anda menggunakan beberapa PV, nilai ini harus unik untuk setiap PV.serverAlamat titik pemasangan NAS.
Untuk menemukan alamat titik pemasangan, lihat Kelola titik pemasangan.
pathSubdirektori NAS yang akan dipasang. Jika tidak ditentukan, direktori root dipasang secara default.
Jika direktori tersebut tidak ada di sistem file NAS, sistem akan membuatnya secara otomatis sebelum pemasangan.
General-purpose NAS: Direktori root adalah
/.Extreme NAS: Direktori root adalah
/share. Saat memasang subdirektori,pathharus dimulai dengan/share(misalnya,/share/data).
mountOptionsBuat PV.
kubectl create -f pv-nas.yamlPeriksa status dan properti PV.
kubectl get pvOutput yang diharapkan:
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS VOLUMEATTRIBUTESCLASS REASON AGE pv-nas 5Gi RWX Retain Available <unset> 25sOutput menunjukkan bahwa PV berhasil dibuat dengan kapasitas 5 GiB dan berada dalam status Available, artinya PV tersebut belum diklaim oleh PVC.
Konsol
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Di halaman Persistent Volumes, klik Create. Di kotak dialog yang muncul, konfigurasikan parameter dan klik Create.
Parameter
Deskripsi
PV Type
Pilih NAS.
Volume Name:
Nama PV. Nama harus unik dalam kluster.
Capacity
Deklarasi kapasitas untuk PV. Nilai ini digunakan untuk mencocokkan dengan PVC dan tidak membatasi kapasitas aktual yang tersedia. Kapasitas maksimum yang tersedia untuk aplikasi Anda adalah total kapasitas sistem file NAS.
Batas kapasitas aktual NAS ditentukan oleh spesifikasinya. Untuk informasi selengkapnya, lihat General-purpose NAS dan Extreme NAS.
Access Mode
Menentukan mode akses. Nilai yang valid meliputi:
ReadWriteMany: Volume dapat dipasang sebagai read-write oleh banyak node.
ReadWriteOnce: Volume dapat dipasang sebagai read-write oleh satu node.
Use CNFS
Menentukan apakah akan menggunakan CNFS, yang menyediakan kemampuan tambahan seperti O&M otomatis, akselerasi cache, dan pemantauan kinerja.
Untuk mengelola sistem file NAS yang sudah ada dengan CNFS, lihat Buat sistem file NAS yang dikelola CNFS (Direkomendasikan).
Mount Target Domain Name:
Parameter ini dapat dikonfigurasi hanya saat CNFS dinonaktifkan.
Alamat titik pemasangan NAS.
Untuk mendapatkan alamat tersebut, lihat Kelola titik pemasangan.
Select Mount Target: Pilih alamat titik pemasangan yang sebelumnya telah Anda tambahkan.
Custom: Gunakan nama domain kustom sebagai alamat pemasangan. Pastikan Anda telah mengonfigurasi resolusi DNS dari nama domain kustom ke titik pemasangan NAS target.
Advanced Options (Optional)
Mount Path
Subdirektori NAS yang akan dipasang. Jika tidak ditentukan, direktori root dipasang secara default.
Jika direktori tersebut tidak ada di sistem file NAS, sistem akan membuatnya secara otomatis sebelum pemasangan.
General-purpose NAS: Direktori root adalah
/.Extreme NAS: Direktori root adalah
/share. Saat memasang subdirektori,pathharus dimulai dengan/share(misalnya,/share/data).
Reclaim Policy
Retain (Default): Saat PVC dihapus, PV masuk ke status 'Released', tetapi data NAS backend dipertahankan. Anda harus membersihkan objek PV dan datanya secara manual.
Delete: Saat PVC dihapus, PV yang sesuai juga dihapus. Kebijakan ini harus digunakan dengan
archiveOnDelete. Namun, PV statis tidak mendukungarchiveOnDelete. Oleh karena itu, untuk PV statis, meskipun kebijakan diatur keDelete, menghapus PVC tidak benar-benar menghapus PV atau file NAS.Untuk mengonfigurasi
archiveOnDelete, lihat Gunakan volume NAS dinamis.
Mount Options
Label
Label untuk PV.
Setelah pembuatan selesai, Anda dapat melihat PV yang baru dibuat di halaman Persistent Volumes.
Langkah 2: Buat PVC
Buat PVC untuk mengklaim penyimpanan dari PV.
Kubectl
Buat file bernama
pvc-nas.yamluntuk mengikat PV yang telah Anda buat.kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-nas # Nama PVC. Harus unik dalam namespace. spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi selector: matchLabels: alicloud-pvname: pv-nas # Cocokkan secara tepat dengan PV yang dibuat sebelumnya menggunakan label.Parameter
Deskripsi
accessModesMode akses. Nilai yang valid meliputi:
ReadWriteMany(Default): Volume dapat dipasang sebagai read-write oleh banyak node.ReadWriteOnce: Volume dapat dipasang sebagai read-write oleh satu node.ReadOnlyMany: Volume dapat dipasang sebagai read-only oleh banyak node.
storageKapasitas penyimpanan yang diminta. Nilai ini digunakan untuk mencocokkan dengan PV dan tidak membatasi kapasitas aktual.
Batas kapasitas aktual NAS ditentukan oleh spesifikasinya. Untuk informasi selengkapnya, lihat General-purpose NAS dan Extreme NAS.
matchLabelsMenentukan pemilih label untuk mengikat ke PV tertentu. Nilai ini harus cocok dengan label yang ditetapkan pada PV.
Buat PVC.
kubectl create -f pvc-nas.yamlPeriksa status PVC.
kubectl get pvcOutput yang diharapkan:
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS VOLUMEATTRIBUTESCLASS AGE pvc-nas Bound pv-nas 5Gi RWX <unset> 5sOutput menunjukkan bahwa PVC berhasil mengklaim penyimpanan 5 GiB dan berada dalam status Bound, terikat ke PV pv-nas. PVC siap dipasang dan digunakan oleh aplikasi.
Konsol
Di panel navigasi kiri halaman manajemen kluster, pilih .
Di halaman Persistent Volume Claims, klik Create dan konfigurasikan PVC sesuai petunjuk.
Parameter
Deskripsi
PVC Type
Pilih NAS.
Name
Nama PVC. Nama harus unik dalam namespace.
Allocation Mode
Pilih Existing Volume.
Topik ini menggunakan PV yang dibuat sebelumnya. Jika Anda belum membuat PV, Anda dapat memilih Allocation Mode sebagai Allocation Mode.
Existing Volumes
Pilih PV yang telah Anda buat sebelumnya.
Capacity
Kapasitas penyimpanan yang diminta. Nilai ini digunakan untuk mencocokkan dengan PV dan tidak membatasi kapasitas aktual.
Batas kapasitas aktual NAS ditentukan oleh spesifikasinya. Untuk informasi selengkapnya, lihat General-purpose NAS dan Extreme NAS.
Access Mode
Mode akses. Nilai yang valid meliputi:
ReadWriteMany(Default): Volume dapat dipasang sebagai read-write oleh banyak node.ReadWriteOnce: Volume dapat dipasang sebagai read-write oleh satu node.ReadOnlyMany: Volume dapat dipasang sebagai read-only oleh banyak node.
Langkah 3: Buat aplikasi dan pasang volume
Setelah membuat PVC, Anda dapat membuat aplikasi yang menggunakannya untuk memasang volume NAS.
Kubectl
Buat file bernama
deploy.yamlyang mereferensikan PVC yang telah Anda buat.Aplikasi ini membuat dua Pod yang memasang sistem file NAS yang sama, sehingga memungkinkan Anda memverifikasi penyimpanan bersama nanti.
Buat Deployment.
kubectl create -f deploy.yamlPeriksa status deployment Pod aplikasi.
kubectl get pod -l app=nginxOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE nas-test-****-***a 1/1 Running 0 32s nas-test-****-***b 1/1 Running 0 32s
Konsol
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Di halaman Deployments, klik Create from Image dan konfigurasikan aplikasi sesuai petunjuk.
Tabel berikut menjelaskan parameter utama. Anda dapat menggunakan nilai default untuk parameter lainnya. Untuk informasi selengkapnya, lihat Buat Deployment.
Bagian
Parameter
Deskripsi
Basic Information
Name:
Nama Deployment.
Replicas:
Jumlah replika Pod untuk Deployment.
Beberapa replika memasang sistem file NAS yang sama, sehingga memungkinkan Anda memverifikasi penyimpanan bersama nanti.
Container
Image Name
Alamat gambar aplikasi.
Required Resources
Sumber daya vCPU dan memori yang diperlukan.
Volume
Klik Add PVC dan konfigurasikan parameter.
Mount Source: PVC yang sebelumnya telah Anda buat.
Container Path: Jalur di dalam kontainer tempat sistem file NAS akan dipasang, misalnya /data.
Setelah deployment, klik nama aplikasi di halaman Stateless, lalu di tab Pods, verifikasi bahwa status Pod adalah Running.
Verifikasi penyimpanan bersama dan persisten
Setelah menerapkan aplikasi, Anda dapat memverifikasi bahwa volume berfungsi sesuai harapan.
Penyimpanan bersama | Penyimpanan persisten |
Buat file di satu Pod dan periksa keberadaannya di Pod lain untuk memverifikasi berbagi data.
| Lakukan restart bergulir Pod Deployment dan periksa data di Pod baru untuk memverifikasi persistensi data.
|
Pertimbangan produksi
Keamanan dan pengelolaan izin
Kontrol akses dengan grup izin: NAS menggunakan grup izin untuk mengelola akses jaringan. Ikuti prinsip hak istimewa minimal dengan hanya menambahkan alamat IP pribadi node kluster Anda atau blok CIDR vSwitch-nya. Hindari otorisasi yang terlalu luas seperti
0.0.0.0/0.
Optimasi kinerja dan biaya
Pilih jenis NAS yang tepat: Lihat Pilih jenis sistem file untuk memilih jenis NAS berdasarkan kebutuhan IOPS dan throughput aplikasi Anda.
Optimalkan opsi pemasangan (
mountOptions): Sesuaikan parameter pemasangan NFS berdasarkan karakteristik workload Anda. Misalnya, menggunakan versi protokol sepertivers=4.0atauvers=4.1dapat memberikan kinerja dan kemampuan penguncian file yang lebih baik dalam beberapa skenario. Untuk I/O file skala besar, Anda dapat mencoba menyesuaikan parameterrsizedanwsizeuntuk mengoptimalkan kinerja baca dan tulis.
Operasi dan keandalan
Konfigurasikan pemeriksaan kesehatan: Konfigurasikan liveness probe untuk Pod aplikasi Anda guna memeriksa apakah titik pemasangan berfungsi dengan benar. Jika pemasangan gagal, Kubernetes dapat secara otomatis merestart Pod, yang memicu pemasangan ulang volume.
Pemantauan dan peringatan: Gunakan Pemantauan Penyimpanan Kontainer untuk mengonfigurasi peringatan yang dapat membantu Anda mendeteksi anomali volume atau bottleneck kinerja secara cepat.
Gunakan kebijakan reclaim
Retain: Untuk data produksi, aturpersistentVolumeReclaimPolicyPV keRetain. Hal ini mencegah kehilangan data secara tidak sengaja di sistem file NAS backend jika Anda secara tidak sengaja menghapus PVC.
Bersihkan sumber daya
Untuk menghindari biaya tak terduga, lepaskan sumber daya dalam urutan berikut saat Anda tidak lagi memerlukan volume NAS.
Hapus workload
Aksi: Hapus semua aplikasi (seperti Deployment atau StatefulSet) yang menggunakan volume NAS. Tindakan ini melepas pemasangan volume dari Pod aplikasi.
Perintah contoh:
kubectl delete deployment <nama-deployment-anda>
Hapus PVC
Aksi: Hapus PVC yang terkait dengan aplikasi. Perilaku PV yang terikat selanjutnya bergantung pada
persistentVolumeReclaimPolicyPV.Perilaku kebijakan reclaim:
Retain(Direkomendasikan): Setelah PVC dihapus, PV yang terikat masuk ke statusReleased. Baik objek PV maupun data NAS backend sepenuhnya dipertahankan dan harus dihapus secara manual.Delete: Setelah PVC dihapus, objek PV yang sesuai juga dihapus. Perhatikan hal berikut:Jika PV mengarah ke direktori root NAS, data NAS backend dipertahankan untuk mencegah penghapusan tidak sengaja.
Jika
volumeHandlePV statis merupakan akhiran dari nilaipath(misalnya,volumeHandleadalahappdanpathadalah/exports/app), menghapus PVC akan memicu penghapusan otomatis subdirektori NAS backend. Gunakan pengaturan ini dengan hati-hati.
Perintah contoh:
kubectl delete pvc <nama-pvc-anda>
Hapus PV
Aksi: Anda dapat menghapus PV saat berada dalam status
AvailableatauReleased. Tindakan ini hanya menghapus definisi PV dari kluster Kubernetes dan tidak menghapus data di sistem file NAS backend.Perintah contoh:
kubectl delete pv <nama-pv-anda>
Hapus sistem file NAS backend (Opsional)
Aksi: Lihat Hapus sistem file. Tindakan ini menghapus permanen semua data di sistem file NAS dan tidak dapat dikembalikan. Lakukan dengan sangat hati-hati. Sebelum melakukan tindakan ini, pastikan tidak ada layanan yang bergantung pada sistem file NAS tersebut.
Referensi
Jika Anda mengalami masalah saat memasang atau menggunakan volume NAS, lihat dokumen berikut untuk troubleshooting:
Anda dapat menggunakan CNFS untuk mengelola sistem file NAS secara independen, yang meningkatkan kinerja dan kontrol QoS. Untuk informasi selengkapnya, lihat Kelola sistem file NAS menggunakan CNFS.