Volume disk yang disediakan secara statis memungkinkan Anda menyambungkan disk Alibaba Cloud yang sudah ada ke sebuah Pod sehingga data tetap tersimpan meskipun Pod direstart atau dijadwalkan ulang. Berbeda dengan penyediaan dinamis, Anda sendiri yang membuat Persistent Volume (PV) dan Persistent Volume Claim (PVC), lalu menyebarkan aplikasi yang mereferensikan PVC tersebut.
Berikut ringkasan prosesnya:
-
Sebagai administrator kluster, buat PV yang didukung oleh disk yang sudah ada.
-
Buat PVC yang melakukan bind ke PV menggunakan pemilih label.
-
Sebarkan aplikasi yang memasang PVC tersebut.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
-
Kluster ACK yang dikelola. Lihat Buat Kluster ACK yang Dikelola.
-
Disk Alibaba Cloud yang sudah ada. Lihat Buat disk.
-
kubectl yang terhubung ke kluster Anda. Lihat Dapatkan file kubeconfig kluster dan gunakan kubectl untuk menghubungkan ke kluster.
Batasan
-
Setiap disk hanya dapat dipasang ke satu Pod dalam satu waktu.
-
Disk hanya dapat dipasang ke node yang berada di zona yang sama dengan disk tersebut.
Kasus penggunaan
Penyediaan disk statis cocok untuk:
-
Beban kerja stateful dengan kebutuhan I/O tinggi — database seperti MySQL dan Redis yang memerlukan penyimpanan blok khusus tanpa berbagi data.
-
Penulisan log berkecepatan tinggi — aplikasi yang menulis data log dengan throughput tinggi yang konsisten.
-
Penyimpanan data independen dari Pod — data yang harus bertahan lebih lama daripada Pod mana pun.
Buat PV
-
Buat file bernama
pv-static.yamldengan konten berikut:apiVersion: v1 kind: PersistentVolume metadata: name: <your-disk-id> labels: alicloud-pvname: <your-disk-id> failure-domain.beta.kubernetes.io/zone: <your-zone> failure-domain.beta.kubernetes.io/region: <your-region> spec: capacity: storage: 20Gi accessModes: - ReadWriteOnce flexVolume: driver: "alicloud/disk" fsType: "ext4" options: volumeId: "<your-disk-id>"Ganti placeholder dengan nilai aktual Anda:
Field Description Required Example name(metadata)Nama PV. Atur ke ID disk. Ya <your-disk-id>alicloud-pvnameLabel yang digunakan oleh pemilih PVC untuk melakukan bind ke PV ini. Atur ke ID disk. Ya <your-disk-id>failure-domain.beta.kubernetes.io/zoneZona tempat disk ditempatkan. Diperlukan untuk kluster multi-zona agar Pod dijadwalkan ke zona yang benar. Ya (kluster multi-zona) cn-hangzhou-bfailure-domain.beta.kubernetes.io/regionWilayah tempat disk ditempatkan. Diperlukan untuk kluster multi-zona. Ya (kluster multi-zona) cn-hangzhoucapacity.storageUkuran penyimpanan. Ya 20GivolumeIdID disk yang sudah ada untuk disambungkan. Ya <your-disk-id>Untuk kluster yang ditempatkan di beberapa zona, label
failure-domain.beta.kubernetes.io/zonedanfailure-domain.beta.kubernetes.io/regionmemastikan bahwa Pod dijadwalkan ke zona tempat disk berada. Lihat Pasang volume disk yang disediakan secara statis untuk detail selengkapnya. -
Terapkan manifes:
kubectl create -f pv-static.yaml -
Verifikasi bahwa PV telah dibuat: Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters. Pada halaman Clusters, temukan kluster yang ingin Anda kelola, lalu klik nama kluster tersebut atau klik Details di kolom Actions. Di panel navigasi sebelah kiri halaman detail, pilih Volumes > Persistent Volumes. Verifikasi bahwa PV yang baru dibuat ditampilkan.
Buat PVC
-
Buat file bernama
pvc-static.yamldengan konten berikut:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: pvc-disk spec: accessModes: - ReadWriteOnce resources: requests: storage: 20Gi selector: matchLabels: alicloud-pvname: <your-disk-id>Ganti
<your-disk-id>dengan ID disk yang Anda gunakan saat membuat PV. Bidangselector.matchLabelsmelakukan bind PVC ini ke PV yang memiliki labelalicloud-pvnameyang sesuai. -
Terapkan manifes:
kubectl create -f pvc-static.yaml -
Verifikasi bahwa PVC telah dibuat: Masuk ke Konsol ACK. Di panel navigasi sebelah kiri, klik Clusters. Pada halaman Clusters, temukan kluster yang ingin Anda kelola, lalu klik nama kluster tersebut atau klik Details di kolom Actions. Di panel navigasi sebelah kiri halaman detail, pilih Volumes > Persistent Volume Claims. Pada halaman Persistent Volume Claims, verifikasi bahwa PVC yang baru dibuat ditampilkan.
Sebarkan aplikasi
-
Buat file bernama
static.yamldengan konten berikut:apiVersion: apps/v1 kind: Deployment metadata: name: nginx-static labels: app: nginx spec: selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx volumeMounts: - name: disk-pvc mountPath: "/data" volumes: - name: disk-pvc persistentVolumeClaim: claimName: pvc-diskPenyebaran ini memasang PVC
pvc-diskke path/datadi dalam kontainer. -
Terapkan manifes:
kubectl create -f static.yaml -
Verifikasi bahwa Penyebaran dan Pod sedang berjalan:
kubectl get pod | grep staticOutput yang diharapkan:
nginx-static-78c7dcb9d7-g**** 2/2 Running 0 32sAnda juga dapat memverifikasi di Konsol ACK: navigasi ke Workloads > Deployments dan konfirmasi bahwa
nginx-staticterdaftar.
Verifikasi persistensi data
Lakukan langkah-langkah berikut untuk memastikan bahwa data yang ditulis ke disk tetap tersimpan meskipun Pod dihapus dan dibuat ulang.
-
Konfirmasi bahwa disk dipasang ke
/data:kubectl exec nginx-static-78c7dcb9d7-g**** -- df | grep dataOutput yang diharapkan:
/dev/vdf 20511312 45080 20449848 1% /data -
Daftar file di
/data:kubectl exec nginx-static-78c7dcb9d7-g**** -- ls /dataOutput yang diharapkan:
lost+found -
Buat file uji:
kubectl exec nginx-static-78c7dcb9d7-g**** -- touch /data/static -
Konfirmasi bahwa file tersebut ada:
kubectl exec nginx-static-78c7dcb9d7-g**** -- ls /dataOutput yang diharapkan:
static lost+found -
Hapus Pod untuk memicu pembuatan ulang:
kubectl delete pod nginx-static-78c7dcb9d7-g****Output yang diharapkan:
pod "nginx-static-78c7dcb9d7-g****" deletedDi terminal terpisah, pantau siklus hidup Pod:
kubectl get pod -w -l app=nginxOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE nginx-static-78c7dcb9d7-g**** 2/2 Running 0 50s nginx-static-78c7dcb9d7-g**** 2/2 Terminating 0 72s nginx-static-78c7dcb9d7-h**** 0/2 Pending 0 0s nginx-static-78c7dcb9d7-h**** 0/2 Pending 0 0s nginx-static-78c7dcb9d7-h**** 0/2 Init:0/1 0 0s nginx-static-78c7dcb9d7-g**** 0/2 Terminating 0 73s nginx-static-78c7dcb9d7-h**** 0/2 Init:0/1 0 5s nginx-static-78c7dcb9d7-g**** 0/2 Terminating 0 78s nginx-static-78c7dcb9d7-g**** 0/2 Terminating 0 78s nginx-static-78c7dcb9d7-h**** 0/2 PodInitializing 0 6s nginx-static-78c7dcb9d7-h**** 2/2 Running 0 8s -
Ambil nama Pod yang dibuat ulang:
kubectl get podOutput yang diharapkan:
NAME READY STATUS RESTARTS AGE nginx-static-78c7dcb9d7-h**** 2/2 Running 0 14s -
Verifikasi bahwa file uji masih ada di Pod yang dibuat ulang:
kubectl exec nginx-static-78c7dcb9d7-h6brd -- ls /dataOutput yang diharapkan:
static lost+foundFile
staticmasih ada, yang mengonfirmasi bahwa data yang ditulis ke disk tetap tersimpan meskipun Pod dihapus dan dibuat ulang.
Langkah berikutnya
-
Untuk menggunakan kelas penyimpanan guna penyediaan PV otomatis, lihat Gunakan volume disk yang disediakan secara dinamis untuk penyimpanan persisten.
-
Untuk opsi konfigurasi lanjutan saat memasang volume disk yang disediakan secara statis, lihat Pasang volume disk yang disediakan secara statis.