Nahhh
Mengapa perlu ada catatan ini? ya karena memang saya bingung dan harus mencari tahu sendiri apa berbedaanya. Kan nggak lucu dong hanya karena sering melihat tapi tidak tahu persis apa konsep yang sebenarnya terjadi. wkkkk
Sebelum mengetahui perbedaan Stateless dan Statefullset pada kubernetes, urutan yang perlu kita pahami adalah mengetahui aplikasi stateless dan statefull terlebih dahulu, dan ini perbedaanya teng tenggg
Aplikasi Stateless | Aplikasi Statefull |
---|---|
Digunakan untuk request baru. Ex: Aplikasi backend dari nodejs | Digunakan untuk menyimpan data. Ex: mysql |
Tidak menyimpanpan state sebelumnya | Menyimpan state sebelumnya |
Deploy di kubernetes mengunakan mode deployment | Deploy di kubernetes menggunakan mode statefullset |
Setelah mengetahui perbadaan basic dari masing-masing aplikasi tersebut, harusnya sudah ada gambaran lah ya.
Perbedaan Stateless dan Statefullset pada kubernetes
Stateless | StatefullSet |
---|---|
Identical and Interchangable | Not identical |
Pod yang dibuat waktunya acak dan menggunakan random hash | Memiliki fix ordered name |
Pod bisa dihapus/dibuat pada waktu yang bersamaan | Pod tidak bisa dihapus/dibuat pada waktu bersamaan |
Deploy menggunakan Deployment | Deploy menggunakan Statefullset |
Persistent volume tidak bisa digunakan oleh pod lain ketika recreate | Persistent volume bisa digunakan oleh pod lain ketika recreate |
Catatan didalam catatan
- stateful kurang cocok untuk containerization
statefull
- memiliki fix oredered name
- pod tidak akan dibuat ketika previous pod belum selesai
- can’t be created/deleted at same time
- can’t be randomly addressed
- replica pods are not identical
- pod yang dinyalakan akan tetap sama idnya meskipun baru/sudah dihapus
- akan ada namanya master slave pada pod, karena jika semua pod dapat RW(Read and Write) maka akan terjadi inconsistency data
- storage masing" pod akan berbeda
- akan continously sync
- jika scale up pod maka pod yang baru akan clone dari previous pod, bukan dari sembarang pod
- baiknya ketika menggunakan statefullset dengan persistence volume yang tipenya remote storage, karena sewaktu waktu pod dibuat ulang di node yang berbeda masik bisa mengakses persistent volume
- masing masing pod memiliki service sendiri
- selalu akan membuat service headless yang digunakan untuk koneksi antar worker pod untuk data tetap pada state yg uptodate