Topik ini menjelaskan cara memasang volume Alibaba Cloud Network Attached Storage (NAS) ke Pod dalam kluster Container Service for Kubernetes (ACK) menggunakan penyediaan statis. Penyediaan statis memungkinkan Anda menghubungkan Pod ke sistem file NAS yang sudah ada untuk penyimpanan persisten dan bersama di beberapa Pod secara simultan.
Prasyarat
Kluster ACK Serverless telah dibuat. Untuk informasi selengkapnya, lihat Buat kluster ACK Serverless.
Sistem file NAS telah dibuat. Untuk informasi selengkapnya, lihat Buat sistem file.
Jika Anda perlu mengenkripsi data dalam PersistentVolume (PV) NAS, konfigurasikan jenis enkripsi saat membuat sistem file NAS.
Titik pemasangan NAS telah dibuat. Untuk informasi selengkapnya, lihat Kelola titik pemasangan.
Titik pemasangan NAS harus berada dalam VPC yang sama dengan node kluster.
kubectl telah terhubung ke kluster. Untuk informasi selengkapnya, lihat Dapatkan file kubeconfig dan hubungkan ke kluster menggunakan kubectl.
Kasus penggunaan
Aplikasi dengan kebutuhan I/O disk tinggi.
Mendukung berbagi file lintas host, misalnya sebagai server file.
Catatan
Saat menggunakan sistem file NAS Ekstrem,
pathyang dikonfigurasi untuk PersistentVolume (PV) harus menggunakan /share sebagai direktori induk. Misalnya, subdirektori sistem file NAS yang dipasang oleh Pod dapat diatur ke /share/path1.NAS mendukung pemasangan simultan oleh beberapa Pod. Dalam kasus ini, beberapa Pod mungkin memodifikasi data yang sama secara bersamaan, sehingga aplikasi harus menerapkan sinkronisasi data sendiri.
CatatanDirektori / dalam penyimpanan NAS tidak mendukung modifikasi izin, kepemilikan, atau kelompok.
Jika Anda mengonfigurasi parameter securityContext.fsgroup dalam templat aplikasi, Kubelet akan melakukan operasi
chmodatauchownsetelah PersistentVolume (PV) dipasang, yang meningkatkan waktu pemasangan.CatatanJika parameter securityContext.fsgroup telah dikonfigurasi dan Anda perlu mengurangi waktu pemasangan, lihat FAQ volume NAS.
Pasang volume NAS menggunakan Konsol
Langkah 1: Buat PV
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Cluster List, klik nama kluster tujuan atau klik Details di kolom Actions.
Di panel navigasi kiri halaman manajemen kluster, pilih .
Di halaman Persistent Volumes, klik Create di pojok kanan atas.
Di kotak dialog Create PV, konfigurasikan parameter.
Parameter
Catatan
PV Type
Dalam contoh ini, NAS dipilih.
Name
Nama PersistentVolume (PV) yang akan dibuat. Nama PV harus unik dalam kluster. Dalam contoh ini, namanya adalah pv-nas.
Capacity
Kapasitas PersistentVolume (PV) yang akan dibuat. Perhatikan bahwa sistem file NAS itu sendiri tidak memberlakukan batasan penggunaan. Ini bukan kuota pada sistem file NAS, melainkan deklarasi kapasitas untuk PV yang sedang dibuat.
Access Mode
Pilih ReadWriteMany dan ReadWriteOnce. Nilai default-nya adalah ReadWriteMany.
Mount Target Domain Name:
Anda dapat menentukan alamat pemasangan kluster di titik pemasangan NAS menggunakan Select Mount Target atau Custom.
Advanced Options (Optional)
Mount Path
Subdirektori NAS yang akan dipasang. Jika parameter ini tidak ditentukan, direktori root akan dipasang secara default.
Jika direktori tersebut tidak ada dalam sistem file NAS, direktori tersebut akan dibuat secara otomatis lalu dipasang.
NAS tujuan umum: Direktori root adalah
/.NAS Ekstrem: Direktori root adalah
/share. Saat Anda memasang subdirektori,pathharus dimulai dengan/share, seperti/share/data.
Reclaim Policy
Retain (default): Ketika PVC dihapus, PV dan file NAS tidak dihapus. Anda harus menghapusnya secara manual.
Mount Options
Opsi pemasangan untuk NAS, termasuk versi protokol NFS. Secara default, volume dipasang menggunakan NFSv3. Anda dapat menentukan versi berbeda dengan opsi seperti
vers=4.0. Untuk informasi tentang protokol NFS yang didukung oleh berbagai jenis NAS, lihat Protokol NFS.Labels
Tambahkan label ke PersistentVolume (PV) ini.
Setelah mengonfigurasi parameter, klik Create.
Langkah 2: Buat PVC
Di panel navigasi kiri halaman manajemen kluster, pilih .
Di halaman Persistent Volume Claims, klik Create di pojok kanan atas.
Di kotak dialog Create PVC yang muncul, isi parameter.
Parameter
Catatan
PVC Type
Dalam contoh ini, NAS dipilih.
Name
Nama PersistentVolumeClaim (PVC) yang akan dibuat harus unik dalam kluster.
Allocation Mode
Pilih PersistentVolume (PV) yang sudah ada.
CatatanJika belum ada PV yang dibuat, Anda dapat mengatur Allocation Mode ke Create PV untuk mengonfigurasi parameter pembuatan PV. Untuk informasi selengkapnya, lihat Buat PV.
Existing Volumes
Klik Select PV, lalu di kolom Actions di sebelah kanan PV target, klik Select Node untuk memilih PV.
Capacity
Kapasitas PersistentVolume (PV) yang akan dibuat.
CatatanKapasitas PersistentVolumeClaim (PVC) yang akan dibuat tidak boleh melebihi kapasitas PersistentVolume (PV) yang akan dipasang.
Klik Create.
Setelah PersistentVolumeClaim (PVC) dibuat, Anda dapat melihatnya dalam daftar, dan PVC tersebut sudah terikat ke PersistentVolume (PV) yang sesuai.
Langkah 3: Buat aplikasi
-
Di halaman Clusters, klik nama kluster Anda. Di panel navigasi kiri, klik .
Di halaman Deployments, klik Create from Image dan konfigurasikan parameter aplikasi.
Tabel berikut menjelaskan parameter utama. Anda dapat mempertahankan nilai default untuk parameter lainnya. Untuk informasi selengkapnya, lihat Buat workload tanpa status (Deployment).
Kategori
Parameter
Deskripsi
Basic Information
Application Name
Nama Deployment.
Replicas:
Jumlah replika untuk Deployment.
Pengaturan ini memungkinkan Anda memverifikasi fitur penyimpanan bersama NAS.
Container
Image Name
Alamat gambar aplikasi.
Required Resources
Sumber daya vCPU dan memori yang diperlukan.
Volume
Klik Add PVC dan konfigurasikan parameter.
Mount Source: Pilih PVC yang telah Anda buat sebelumnya.
Container Path: Jalur dalam container untuk memasang sistem file NAS, seperti
/data.
Saat deployment selesai, buka halaman Deployments dan klik nama aplikasi. Di tab Pods, verifikasi bahwa Pod berada dalam status Running.
Pasang volume NAS menggunakan kubectl
Jalankan perintah berikut untuk membuat PV statis.
kubectl create -f pv-nas.yamlBerikut adalah contoh file YAML untuk membuat PV statis.
apiVersion: v1 kind: PersistentVolume metadata: name: pv-nas labels: alicloud-pvname: pv-nas spec: capacity: storage: 5Gi accessModes: - ReadWriteMany csi: driver: nasplugin.csi.alibabacloud.com volumeHandle: pv-nas volumeAttributes: server: "2564f4****-ysu87.cn-shenzhen.nas.aliyuncs.com" path: "/csi" mountOptions: - nolock,tcp,noresvport - vers=3Parameter
Catatan
name
Nama PV.
labels
Tetapkan label untuk PV.
storage
Kapasitas yang tersedia dari NAS.
accessModes
Konfigurasikan mode akses.
driver
Jenis driver. Dalam contoh ini, nilainya adalah
nasplugin.csi.alibabacloud.com, yang menunjukkan bahwa plugin CSI Alibaba Cloud NAS digunakan.volumeHandle
Konfigurasikan pengenal unik untuk PV. Jika beberapa PV digunakan secara simultan, nilai ini harus berbeda untuk setiap PV.
server
Titik pemasangan NAS.
path
Subdirektori pemasangan. Untuk NAS Ekstrem, /share harus digunakan sebagai direktori induk.
vers
Versi protokol NFS untuk memasang PersistentVolume (PV) NAS. Disarankan menggunakan v3. NAS Ekstrem hanya mendukung v3.
Jalankan perintah berikut untuk membuat PVC statis.
Buat PersistentVolumeClaim (PVC) NAS dan gunakan
selectoruntuk memfilter PV, sehingga mengonfigurasi secara tepat pengikatan antara PVC dan PV.kubectl create -f pvc-nas.yamlBerikut adalah contoh file YAML untuk membuat PVC statis.
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-nas spec: accessModes: - ReadWriteMany resources: requests: storage: 5Gi selector: matchLabels: alicloud-pvname: pv-nasParameter
Catatan
name
Nama PVC.
accessModes
Konfigurasikan mode akses.
storage
Deklarasikan penggunaan aplikasi, yang tidak boleh melebihi kapasitas total PersistentVolume (PV).
matchLabels
Masukkan label PV untuk mengaitkan dengan PV.
Jalankan perintah berikut untuk membuat aplikasi bernama nas-static dan pasang PVC tersebut.
kubectl create -f nas.yamlBerikut adalah contoh file nas.yaml untuk membuat aplikasi nas-static.
apiVersion: apps/v1 kind: Deployment metadata: name: nas-static 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: pvc-nasParameter
Catatan
mountPath
Jalur pemasangan NAS dalam container.
claimName
Nama PVC, digunakan untuk mengikat PVC.
Jalankan perintah berikut untuk melihat informasi Pod.
kubectl get podOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32s
Verifikasi penyimpanan persisten NAS
Lihat aplikasi yang telah dideploy dan file NAS.
Jalankan perintah berikut untuk melihat nama aplikasi yang telah dideploy.
kubectl get podOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32sJalankan perintah berikut untuk melihat file di bawah jalur /data dari aplikasi mana pun. Dalam contoh ini, Pod bernama
nas-static-5b5cdb85f6-n****digunakan.kubectl exec nas-static-5b5cdb85f6-n**** -- ls /dataTidak ada output yang dikembalikan, menunjukkan bahwa tidak ada file di bawah jalur /data.
Jalankan perintah berikut untuk membuat file nas di bawah jalur /data dari Pod bernama
nas-static-5b5cdb85f6-n****.kubectl exec nas-static-5b5cdb85f6-n**** -- touch /data/nasJalankan perintah berikut untuk melihat file di bawah jalur /data dari Pod bernama
nas-static-5b5cdb85f6-n****.kubectl exec nas-static-5b5cdb85f6-n**** -- ls /dataOutput yang diharapkan:
nasJalankan perintah berikut untuk menghapus Pod.
kubectl delete pod nas-static-5b5cdb85f6-n****Pada saat yang sama, di jendela lain, jalankan perintah berikut untuk melihat proses penghapusan Pod dan Kubernetes membangun ulang Pod.
kubectl get pod -w -l app=nginxVerifikasi apakah file yang dibuat di NAS masih ada setelah Pod dihapus.
Jalankan perintah berikut untuk melihat nama Pod yang dibangun ulang oleh Kubernetes.
kubectl get podOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32sJalankan perintah berikut untuk melihat file di bawah jalur /data dari Pod bernama
nas-static-5b5cdb85f6-n****.kubectl exec nas-static-5b5cdb85f6-n**** -- ls /dataOutput yang diharapkan:
nasFile nas masih ada, menunjukkan bahwa data NAS dapat disimpan secara persisten.
Verifikasi penyimpanan bersama
Lihat Pod tempat aplikasi yang telah dideploy berjalan dan file NAS.
Jalankan perintah berikut untuk melihat nama Pod tempat aplikasi berjalan.
kubectl get podOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE nas-static-5b5cdb85f6-n**** 1/1 Running 0 32s nas-static-c5bb4746c-4**** 1/1 Running 0 32sJalankan perintah berikut untuk melihat file di bawah jalur /data dari 2 Pod tersebut.
kubectl exec nas-static-5b5cdb85f6-n**** -- ls /data kubectl exec nas-static-c5bb4746c-4**** -- ls /data
Jalankan perintah berikut untuk membuat file nas di bawah jalur /data dari Pod mana pun.
kubectl exec nas-static-5b5cdb85f6-n**** -- touch /data/nasJalankan perintah berikut untuk melihat file di bawah jalur /data dari 2 Pod tersebut.
Jalankan perintah berikut untuk melihat file di bawah jalur /data dari Pod bernama
nas-static-5b5cdb85f6-n****.kubectl exec nas-static-5b5cdb85f6-n**** -- ls /dataOutput yang diharapkan:
nasJalankan perintah berikut untuk melihat file di bawah jalur /data dari Pod bernama
nas-static-c5bb4746c-4****.kubectl exec nas-static-c5bb4746c-4**** -- ls /dataOutput yang diharapkan:
nasJika file yang dibuat di bawah jalur /data dari Pod mana pun juga muncul di bawah jalur /data dari kedua Pod, hal ini menunjukkan bahwa kedua Pod tersebut berbagi NAS yang sama.