Apa itu Volume dan Persistent Storage di Kubernetes?
Jika DomaiNesians baru mulai menggunakan Kubernetes, mungkin pernah kaget saat data aplikasi tiba-tiba hilang setelah pod di-restart. Salah satu konsep penting yang perlu dipahami sejak awal adalah volume dan persistent storage. Keduanya berfungsi untuk menyimpan data agar tetap aman, meski pod mati, diganti, atau dijalankan ulang. Di artikel ini, kita akan membahas apa itu volume dan persistent storage di Kubernetes, mengapa penting, dan bagaimana cara menggunakannya dengan benar.
Apa Itu Persistent Volume dan Persistent Volume Claim (PVC)?
Di Kubernetes, konsep Persistent Volume (PV) dan Persistent Volume Claim (PVC) adalah cara untuk mengelola penyimpanan data yang bersifat persisten dan bisa digunakan oleh pod, tanpa tergantung pada lifecycle pod itu sendiri.
PV adalah sumber daya penyimpanan di cluster Kubernetes. PV ini disediakan oleh admin atau disiapkan dari berbagai jenis storage, seperti disk loka. PV ini adalah representasi fisik atau virtual dari ruang penyimpanan yang siap dipakai.
Sementara itu, PVC adalah permintaan dari pengguna (biasanya developer atau aplikasi) untuk menggunakan ruang penyimpanan tertentu dengan kapasitas dan atribut yang diinginkan.ย
Kenapa Volume Penting dalam Kubernetes?
Volume di Kubernetes cukup penting karena container pada dasarnya bersifat ephemeral atau sementara. Setiap kali container dimulai ulang atau pod diganti, semua data yang tersimpan di dalam container akan hilang. Nah, volume jadi solusi supaya data tersebut bisa bertahan meskipun container mati atau berpindah-pindah.
Dengan volume, kamu bisa menyimpan data aplikasi seperti file konfigurasi, database, atau cache secara persisten. Cukup krusial terutama untuk aplikasi yang membutuhkan stateful data, misalnya database, sistem antrian, atau aplikasi yang menyimpan file user.
Selain itu, volume juga memungkinkan data untuk dibagikan antar beberapa container dalam satu pod. Misalnya, jika DomaiNesians punya aplikasi yang terdiri dari beberapa container yang harus mengakses file yang sama, volume jadi media penyimpanannya.
Cara Kerja Persistent Storage di Kubernetes
Persistent storage di Kubernetes bekerja dengan konsep PV dan PVC yang saling berinteraksi untuk menyediakan penyimpanan yang terpisah dari lifecycle pod. Begini alur kerjanya:
- Admin Menyediakan Persistent Volume (PV)
Administrator cluster membuat PV yang merepresentasikan storage fisik atau virtual, seperti disk di cloud, NFS server, atau storage lokal di node. PV ini memiliki kapasitas, akses mode, dan atribut lain yang sudah ditentukan. - Pengguna Membuat Persistent Volume Claim (PVC)
Developer atau aplikasi mengajukan permintaan penyimpanan melalui PVC dengan menyebutkan ukuran dan jenis akses yang dibutuhkan. PVC ini seperti permohonan untuk menggunakan storage yang sesuai kebutuhan. - Binding PVC dengan PV
Kubernetes secara otomatis mencocokkan PVC dengan PV yang tersedia dan memenuhi syarat. Jika ditemukan, PVC akan tersambung ke PV tersebut, dan storage siap digunakan oleh pod. - Pod Menggunakan PVC sebagai Volume
Setelah PVC tersambung, pod bisa menggunakan PVC tersebut sebagai volume untuk menyimpan data. Data yang ditulis ke volume ini akan tetap tersimpan meskipun pod di restart atau dipindah ke node lain. - Lifecycle Terpisah
Karena PV dan PVC berada di luar lifecycle pod, data di dalam persistent storage tetap aman walaupun pod yang menggunakan storage tersebut dihentikan, dihapus, atau di restart.
Jenis-Jenis Persistent Storage yang Didukung Kubernetes
Kubernetes mendukung berbagai jenis persistent storage yang bisa digunakan sesuai kebutuhan aplikasi dan infrastruktur. Berikut beberapa jenis yang paling umum dan populer:
1. hostPath
Jenis storage ini menggunakan direktori atau file yang ada di node tempat pod berjalan. Cocok untuk testing atau development, tapi kurang ideal untuk production karena data tidak bisa dipindahkan jika pod pindah ke node lain.
2. NFS (Network File System)
NFS memungkinkan beberapa pod atau node mengakses storage yang sama secara bersamaan melalui jaringan. Ini cocok untuk aplikasi yang butuh akses bersama ke file, seperti shared storage untuk web server.
3. AWS EBS (Elastic Block Store)
Ini adalah storage block yang disediakan oleh AWS untuk instans EC2. Cocok untuk aplikasi yang berjalan di cluster Kubernetes di AWS dan membutuhkan persistent disk yang cepat dan andal. Namun, EBS hanya bisa dipasang ke satu node dalam satu waktu.
4. GCE Persistent Disk
Serupa dengan AWS EBS, ini adalah layanan penyimpanan block dari Google Cloud Platform yang bisa dipakai di cluster Kubernetes yang berjalan di GCP. Persistent disk ini cepat, tahan lama, dan bisa dipasang ke satu atau lebih node tergantung konfigurasi.
5. Azure Disk dan Azure File
Sumber: Azure
Untuk Kubernetes yang berjalan di Microsoft Azure, kamu bisa pakai Azure Disk (block storage) atau Azure File (file storage yang bisa diakses secara bersama). Keduanya memberikan integrasi storage cloud yang bagus.
6. CSI (Container Storage Interface) Drivers
CSI adalah standar yang memungkinkan vendor storage pihak ketiga untuk membuat plugin storage yang bisa dipakai di Kubernetes. Ini membuka kemungkinan menggunakan banyak jenis storage modern, seperti Ceph, GlusterFS, atau storage khusus dari provider lain.
Tips Memilih Storage untuk Kebutuhan Aplikasi di Kubernetes
Berikut beberapa tips yang bisa dipakai saat menentukan jenis storage yang cocok:
1. Pahami Kebutuhan Aplikasi
Pertama, kenali jenis aplikasi yang dijalankan. Apakah aplikasi tersebut stateless atau stateful?
- Untuk aplikasi stateless seperti web server biasa yang tidak butuh menyimpan data, kamu bisa pakai storage sementara seperti emptyDir.
- Untuk aplikasi stateful seperti database, kamu butuh persistent storage yang bisa menyimpan data dengan aman.
2. Perhatikan Akses dan Konsistensi Data
Apakah aplikasi butuh akses data secara bersamaan dari banyak pod? Jika iya, pilihlah storage dengan dukungan shared access seperti NFS atau storage berbasis file yang bisa diakses secara paralel.
3. Evaluasi Performa Storage
Jika aplikasi butuh performa tinggi, misalnya database yang sering membaca dan menulis data, pilih storage dengan latency rendah dan throughput tinggi seperti block storage (AWS EBS, GCE Persistent Disk).
4. Perhatikan Skalabilitas dan Durabilitas
Pastikan storage yang dipilih mampu mengikuti pertumbuhan aplikasi dan menyimpan data dengan aman dalam jangka panjang. Pilih storage yang mendukung backup dan recovery.
5. Sesuaikan dengan Infrastruktur yang Dipakai
Pilih storage yang kompatibel dengan cloud provider atau lingkungan on-premise. Misalnya, AWS EBS untuk cluster di AWS, GCE Persistent Disk untuk Google Cloud, atau storage lokal untuk on-premise.
Kelola Data Lebih Aman dengan Storage yang Tepat
Apa itu Volume dan Persistent Storage di Kubernetes?
sumber: trainwithshubham.blog
Memahami dan memilih storage yang tepat adalah kunci agar aplikasi Kubernetes berjalan lancar dan data tetap aman. Mulai dari mengenali kebutuhan aplikasi, menyesuaikan performa dan akses data, hingga mempertimbangkan infrastruktur yang digunakan, semua harus dipikirkan matang-matang supaya storage bisa mendukung aplikasi secara maksimal.
Kalau kamu ingin menjalankan aplikasi Kubernetes dengan performa dan kestabilan terbaik, Cek Cloud VPS DomaiNesia yang menawarkan opsi storage fleksibel dan handal. Dengan dukungan storage yang tepat di lingkungan yang stabil, pengelolaan data jadi lebih mudah dan risiko kehilangan data pun bisa diminimalisir.

