StatefulSet
Gunakan 'StatefulSet' dengan Stateful Distributed Applications, yang mengharuskan setiap node memiliki status persisten . StatefulSet menyediakan kemampuan untuk mengonfigurasi sejumlah node yang berubah-ubah, untuk aplikasi / komponen berstatus, melalui konfigurasi (replika = N).
Ada dua jenis aplikasi terdistribusi berstatus: Master-Master dan Master-Slave. Semua node dalam konfigurasi Master-Master dan node Slave dalam konfigurasi Master-Slave dapat menggunakan StatefulSet.
Contoh:
Master-Slave -> Datanodes (slave) dalam cluster Hadoop
Master-Master -> Node database (master-master) dalam cluster Cassandra
Setiap Pod (replika / node) dalam StatefulSet memiliki identitas jaringan yang Unik dan Stabil. Misalnya dalam Cassandra StatefulSet dengan nama 'cassandra' dan jumlah node replika sebagai N, setiap pod Cassandra (node) memiliki:
- Indeks Ordinal untuk setiap pod: 0,1, .., N-1
- ID jaringan stabil: cassandra-0, cassandra-1, .., cassandra-N-1
- Volume persisten terpisah untuk setiap pod terhadap template klaim volume, yaitu penyimpanan terpisah untuk setiap pod (node)
- Pod dibuat dengan urutan 0 hingga N-1 dan diakhiri dengan urutan terbalik N-1 hingga 0
Lihat: https://kubernetes.io/docs/concepts/workloads/controllers/statefulset/
Penyebaran
'Deployment' di sisi lain cocok untuk aplikasi / layanan stateless di mana node tidak memerlukan identitas khusus. Penyeimbang beban dapat menjangkau node mana pun yang dipilihnya. Semua node sama. Deployment berguna untuk membuat sejumlah node arbitrer, melalui konfigurasi (replicas = N).