Skip to content

emka.web.id

Menu
  • Home
  • Indeks Artikel
  • Tutorial
  • Tentang Kami
Menu

Haruskah Anda Menjalankan Aplikasi Stateful Di Kubernetes?

Posted on October 13, 2022 by Syauqi Wiryahasana
Kubernetes sering didekati dari perspektif sistem stateless. Aplikasi stateless mudah ditampung, didistribusikan, dan diskalakan karena tidak perlu menyimpan data apa pun di luar lingkungannya. Tidak masalah jika penampung dihentikan atau dipindahkan ke host yang berbeda – instance baru dapat menggantikan yang lama tanpa dampak apa pun. Kebanyakan aplikasi nyata tidak seperti ini. Semua kecuali sistem yang paling sederhana memiliki status yang biasanya disimpan dalam database atau sistem file persisten. Data yang mengonfigurasi layanan Anda atau dibuat oleh pengguna harus disimpan dan dapat diakses oleh semua container Anda, di mana pun mereka berada. Tantangan untuk mempertahankan status di seluruh lingkungan sementara dihadapi oleh sebagian besar organisasi yang menggunakan container, orkestrasi, dan cloud native praktek kerja. Beban kerja stateful dapat diakomodasi oleh Kubernetes tetapi alternatif eksternal juga ada. Dalam artikel ini, Anda akan mempelajari beberapa pendekatan yang membuat Kubernetes bekerja dengan aplikasi stateful.

Masalah Dengan State

Istilah "status" menggambarkan data yang terkait dengan aplikasi pada titik waktu tertentu. Ini adalah informasi berumur panjang seperti konten database dan akun pengguna yang perlu diambil sepanjang masa pakai sistem. Status terus berubah saat data dibuat dan dimodifikasi saat layanan Anda digunakan. Fungsi aplikasi yang benar bergantung pada kemampuan setiap instance untuk mengakses status persisten. Jika Anda mendistribusikan empat replika komponen di dua host fisik, kedua mesin tersebut akan memerlukan akses ke penyimpanan data Anda. Ini berarti instance aplikasi memiliki dependensi yang saling terkait yang tidak dapat diganti secara otomatis. Batasan seputar layanan stateful bertentangan dengan model container ephemeral Kubernetes yang dapat diganti kapan saja. Saat Anda bekerja dengan aplikasi stateful, Anda perlu membuat ketentuan khusus agar container dapat mengakses status yang mereka butuhkan dengan andal. Hal ini memerlukan konfigurasi tambahan untuk memberikan persistensi data yang andal dan tetap stabil saat aplikasi Anda menskalakan.

Menjalankan Layanan Stateful Di Kubernetes

Dukungan Kubernetes untuk sistem stateful telah berkembang selama beberapa tahun terakhir, didukung oleh peningkatan minat komunitas. Aplikasi stateful dapat dirakit dari sumber daya yang didukung secara resmi seperti set stateful dan volume persisten. Ini menawarkan metode terintegrasi untuk menyimpan dan mengelola data Anda. Volume persisten menyediakan penyimpanan data ke Pod Anda. File yang ditulis ke volume persisten disimpan secara independen dari Pod yang membuatnya. Konten volume tetap ada di cluster Anda setelah Pod dimusnahkan, memungkinkan penggantinya mengakses status tersimpan. StatefulSets adalah objek API yang mewakili aplikasi stateful. Mereka berfungsi mirip dengan Deployment tetapi menetapkan pengenal unik untuk setiap Pod yang mereka enkapsulasi. Pod mempertahankan pengidentifikasinya bahkan jika di-restart atau dijadwalkan ke Node lain. Ini memungkinkan Anda untuk mengimplementasikan prosedur di mana pemesanan dan identitas Pod penting. Pengenal yang andal memungkinkan Anda mencocokkan ulang volume ke Pod setelah acara penjadwalan dan meluncurkan pembaruan aplikasi secara berurutan. Fitur ini berarti sekarang memungkinkan untuk menjalankan aplikasi stateful di dalam cluster Kubernetes Anda. Anda dapat menulis data ke volume persisten dan menggunakan StatefulSets alih-alih Deployment ketika Pod perlu mengingat identitasnya.

Mengelola Status Di Luar Kubernetes

Rute populer untuk menjalankan layanan stateful di Kubernetes adalah menemukan status di luar cluster Anda. Anda merancang sistem Anda sehingga komponennya dipisahkan dari penyimpanan yang mereka butuhkan. Mereka dapat mengakses data persisten dalam layanan terpisah melalui jaringan. Anda dapat memelihara server database Anda sendiri, menyambung ke berbagi file jaringan yang ada, atau menggunakan layanan yang terkelola sepenuhnya dari penyedia cloud Anda. Aplikasi di cluster Kubernetes Anda harus dikonfigurasi untuk berinteraksi dengan sistem penyimpanan Anda menggunakan API atau protokol akses langsungnya. Ini adalah cara yang baik untuk mempromosikan decoupling di layanan Anda. Menghapus akses sistem file persisten dari aplikasi kemas Anda membuatnya lebih portabel di seluruh lingkungan. Container dapat diluncurkan menggunakan model penerapan stateless karena dependensi penyimpanannya dikurangi menjadi panggilan jaringan dasar. Anda dapat memperoleh manfaat dari fleksibilitas Kubernetes tanpa menimbulkan biaya kerumitan penggunaan volume persisten dan set stateful untuk menyimpan status di cluster Anda.

Menghindari Kubernetes untuk Layanan Stateful

Pemikiran ketiga adalah menghindari Kubernetes sama sekali untuk layanan stateful. Ini biasanya merupakan reaksi yang berlebihan – jika Anda tidak nyaman mempertahankan status di kluster, Anda masih dapat menggunakan metode yang diuraikan di atas untuk menerapkan aplikasi Anda menggunakan penyedia penyimpanan yang berdekatan. Meskipun demikian, masih ada beberapa sistem yang mungkin tidak masuk akal dalam Kubernet. Arsitektur yang sangat bergantung pada sistem file yang bekerja dengan sejumlah besar file dapat menjadi tantangan untuk diterapkan dan diskalakan menggunakan volume persisten. Sistem penyimpanan eksternal yang dikelola bersama Kubernetes mungkin menambahkan latensi yang tidak dapat diterima ketika interaksi file adalah fungsi inti dari layanan Anda. Dalam keadaan ini, Anda mungkin harus mencari pendekatan penerapan alternatif yang memberi Anda kontrol lebih besar atas penyimpanan data dan operasi I/O. Namun pekerjaan sedang berlangsung di ekosistem untuk meningkatkan opsi penyimpanan untuk sistem kemas. Solusi penyimpanan asli cloud muncul sebagai abstraksi konsep tingkat tinggi seperti volume persisten dan set stateful, menerapkan sistem file terdistribusi yang tetap berkinerja saat digunakan di beberapa node. Ceph, Minio, dan Portworx adalah beberapa pesaing di ruang ini.

Haruskah Anda Menjalankan Aplikasi Stateful Di Kubernetes?

Sebagian besar aplikasi stateful dapat digunakan tanpa masalah menggunakan Kubernetes. Keputusan utamanya adalah apakah Anda menyimpan data persisten di dalam klaster Anda, dengan menggunakan volume persisten dan set stateful, atau antarmuka dengan penyimpanan data yang dikelola secara eksternal. Volume persisten berfungsi untuk sebagian besar kasus penggunaan tetapi memiliki beberapa batasan. Tidak semua mode akses volume didukung oleh setiap implementasi, jadi penting untuk memeriksa fitur mana yang didukung oleh distribusi Kubernetes Anda. Relatif sedikit driver yang menawarkan mode ReadWriteMany yang memungkinkan volume untuk diikat ke beberapa Node secara bersamaan, dengan masing-masing dapat membaca dan menulis data. Mode ReadWriteOnce adalah yang paling banyak didukung, memungkinkan setiap Node untuk membaca data tetapi hanya satu dari mereka untuk menulis. Batasan ini dapat memengaruhi penjadwalan aplikasi Anda – sistem dengan beberapa Pod yang perlu menulis ke instance database bersama harus menjalankan semuanya pada satu Node, kecuali ReadWriteMany tersedia. Ini membatasi kemampuan Anda untuk menskalakan layanan Anda. Memanfaatkan database yang dikelola secara eksternal atau sistem penyimpanan objek adalah cara yang efektif untuk mengurangi masalah yang masih ada ini sambil tetap memanfaatkan fleksibilitas Kubernetes. Ini memang membutuhkan aplikasi Anda untuk sepenuhnya dipisahkan dari penyimpanannya sehingga mungkin bukan pilihan jika Anda memigrasikan layanan lama. Bekerja dengan aplikasi lama menghadirkan kasus terkuat untuk tidak menjalankan aplikasi stateful di Kubernetes. Anda dapat mengalami hambatan jika Anda tidak dapat secara sengaja mengetahui di mana status disimpan dan bagaimana status itu dikelola. Dalam situasi ini, biasanya yang terbaik adalah memfaktorkan ulang sistem Anda sebelum Anda mencoba mendistribusikannya di seluruh node penerapan.

Kesimpulan

Meskipun aplikasi stateful dan Kubernetes tidak cocok secara alami, Anda dapat mengakomodasi data persisten di cluster Anda dengan menggabungkan set stateful dan volume persisten. Ini menyediakan metode yang didukung secara resmi untuk mengatur sistem stateful menggunakan Kubernetes tetapi Anda harus tetap memperhatikan batasan penjadwalan yang mereka terapkan. Karena manajemen status dalam cluster menambah kerumitan, menyimpan data persisten dalam layanan eksternal adalah cara populer untuk merampingkan penerapan Anda. Basis data terkelola, platform penyimpanan objek, dan jaringan pribadi memungkinkan Anda menyediakan penyimpanan di luar kluster, lalu menggunakannya dengan aman dari dalam. Anda perlu mengadaptasi aplikasi Anda untuk mendukung antarmuka penyimpanan eksternal, tetapi kemudian dapat memanfaatkan peningkatan fleksibilitas penerapan. Aplikasi yang statusnya terdiri dari file konfigurasi sederhana dapat memanfaatkan ConfigMaps untuk dijalankan di Kubernetes tanpa harus mengadopsi penyimpanan file persisten. ConfigMaps adalah objek kelas satu yang secara otomatis diberikan ke Pod Anda saat dibutuhkan, baik sebagai variabel lingkungan atau file yang di-mount. Mereka menghilangkan kebutuhan akan volume yang terus-menerus ketika Anda hanya menyimpan beberapa pengaturan berumur panjang. Itulah berita seputar Haruskah Anda Menjalankan Aplikasi Stateful Di Kubernetes?, semoga bermanfaat. Disadur dari HowToGeek.com.
Seedbacklink

Recent Posts

TENTANG EMKA.WEB>ID

EMKA.WEB.ID adalah blog seputar teknologi informasi, edukasi dan ke-NU-an yang hadir sejak tahun 2011. Kontak: kontak@emka.web.id.

©2024 emka.web.id Proudly powered by wpStatically