Perbedaan Stateless dan Statefull pada Kubernetes

Oct 12, 2022 min read

Perbandingan 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 StatelessAplikasi Statefull
Digunakan untuk request baru. Ex: Aplikasi backend dari nodejsDigunakan untuk menyimpan data. Ex: mysql
Tidak menyimpanpan state sebelumnyaMenyimpan state sebelumnya
Deploy di kubernetes mengunakan mode deploymentDeploy 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

StatelessStatefullSet
Identical and InterchangableNot identical
Pod yang dibuat waktunya acak dan menggunakan random hashMemiliki fix ordered name
Pod bisa dihapus/dibuat pada waktu yang bersamaanPod tidak bisa dihapus/dibuat pada waktu bersamaan
Deploy menggunakan DeploymentDeploy menggunakan Statefullset
Persistent volume tidak bisa digunakan oleh pod lain ketika recreatePersistent 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