GoDasturchi
StatefulSets vs Deployments

StatefulSets vs Deployments

StatefulSet va Deployment: farqi

Kinoteatrdagi o'rindiqlarni tasavvur qiling: agar hammasi BIR XIL, ALMASHTIRISH mumkin bo'lsa ("istalgan bo'sh joyga o'tir") — bu Deployment'dagi Pod'lar kabi: web-1 o'chib, web-4 yaratilsa, hech kim buni SEZMAYDI, hammasi bir xil ishlaydi. Lekin agar o'rindiqlar RAQAMLANGAN va har biriga MAXSUS buyurtma (masalan, nomer bo'yicha bron) BIRIKTIRILGAN bo'lsa — o'rindiq #3 doim #3 bo'lib QOLISHI, va o'zining bronini SAQLAB qolishi kerak. Bu — StatefulSet talab qiladigan narsa.

tushuncha.txt
Deployment'dagi Pod'lar:              StatefulSet'dagi Pod'lar:
  web-7d9f8c6b5d-2xk4p                  db-0
  web-7d9f8c6b5d-9mjqz                  db-1
  web-7d9f8c6b5d-vh3rt                  db-2

- Nomlar TASODIFIY (hash-suffiks)      - Nomlar TARTIBLI (0, 1, 2, ...)
- Har biri BIR XIL, ALMASHTIRISH       - Har birining O'ZIGA XOS diski bor
  mumkin                                (PersistentVolumeClaim), u BILAN
- O'chsa  istalgan tartibda,           birga "ko'chib yuradi"
  istalgan songa qayta yaratiladi      - Yaratilish/o'chirilish QATIY
- Namuna: web-server, API              tartibda: db-0, keyin db-1, ...
                                       - Namuna: PostgreSQL, Kafka, ZooKeeper

"ReplicaSet: Keeping N Copies Running" darsida yozgan Reconcile — Pod'larning FAQAT SONIGA e'tibor bergan edi, qaysi nusxa deb ATALISHI muhim emas edi. Bu — Deployment falsafasi: Pod'lar stateless (holatsiz) bo'lsa, ular haqiqatan ham bir-birining O'RNINI ALMASHTIRISHI mumkin. Lekin ma'lumotlar bazasi kabi stateful (holatga ega) tizimlarda, har bir nusxaning o'ZIGA XOS DISKI va, ko'p hollarda, boshqalar bilan ANIQ munosabati (masalan, "db-0 — bosh nusxa, db-1 va db-2 — replika") bo'ladi — bunday holatda nusxalarni tasodifiy nom bilan ALMASHTIRISH ma'lumot yo'qolishiga olib kelishi mumkin.

Shuning uchun StatefulSet uchta muhim kafolat beradi: (1) barqaror nomdb-0 doim db-0 bo'lib qoladi, hatto qayta yaratilsa ham; (2) barqaror diskdb-0ga biriktirilgan PersistentVolumeClaim uni QAYTA yaratilganda ham KUZATIB boradi (ma'lumot yo'qolmaydi); (3) tartibli yaratilish/o'chirish — db-1 faqat db-0 TAYYOR bo'lgandan keyin yaratiladi. Amalda qoida sodda: agar ilovangiz stateless bo'lsa (masalan, HTTP API server) — Deployment ishlating; agar u O'Z holatini SAQLASHI kerak bo'lsa (baza, navbat tizimi) — StatefulSet.

Key Takeaway

Key Takeaway:

Deployment — bir-birining o'rnini bemalol almashtira oladigan, holatsiz (stateless) Pod'lar uchun; StatefulSet — har birining o'ziga xos, barqaror nomi va diski bo'lishi SHART bo'lgan, holatga ega (stateful) tizimlar (masalan, ma'lumotlar bazasi) uchun ishlatiladi.

NEXT UP

Putting It All Together: A Mini Control Plane

StatefulSets vs Deployments

StatefulSet va Deployment: farqi

Kinoteatrdagi o'rindiqlarni tasavvur qiling: agar hammasi BIR XIL, ALMASHTIRISH mumkin bo'lsa ("istalgan bo'sh joyga o'tir") — bu Deployment'dagi Pod'lar kabi: web-1 o'chib, web-4 yaratilsa, hech kim buni SEZMAYDI, hammasi bir xil ishlaydi. Lekin agar o'rindiqlar RAQAMLANGAN va har biriga MAXSUS buyurtma (masalan, nomer bo'yicha bron) BIRIKTIRILGAN bo'lsa — o'rindiq #3 doim #3 bo'lib QOLISHI, va o'zining bronini SAQLAB qolishi kerak. Bu — StatefulSet talab qiladigan narsa.

tushuncha.txt
Deployment'dagi Pod'lar:              StatefulSet'dagi Pod'lar:
  web-7d9f8c6b5d-2xk4p                  db-0
  web-7d9f8c6b5d-9mjqz                  db-1
  web-7d9f8c6b5d-vh3rt                  db-2

- Nomlar TASODIFIY (hash-suffiks)      - Nomlar TARTIBLI (0, 1, 2, ...)
- Har biri BIR XIL, ALMASHTIRISH       - Har birining O'ZIGA XOS diski bor
  mumkin                                (PersistentVolumeClaim), u BILAN
- O'chsa  istalgan tartibda,           birga "ko'chib yuradi"
  istalgan songa qayta yaratiladi      - Yaratilish/o'chirilish QATIY
- Namuna: web-server, API              tartibda: db-0, keyin db-1, ...
                                       - Namuna: PostgreSQL, Kafka, ZooKeeper

"ReplicaSet: Keeping N Copies Running" darsida yozgan Reconcile — Pod'larning FAQAT SONIGA e'tibor bergan edi, qaysi nusxa deb ATALISHI muhim emas edi. Bu — Deployment falsafasi: Pod'lar stateless (holatsiz) bo'lsa, ular haqiqatan ham bir-birining O'RNINI ALMASHTIRISHI mumkin. Lekin ma'lumotlar bazasi kabi stateful (holatga ega) tizimlarda, har bir nusxaning o'ZIGA XOS DISKI va, ko'p hollarda, boshqalar bilan ANIQ munosabati (masalan, "db-0 — bosh nusxa, db-1 va db-2 — replika") bo'ladi — bunday holatda nusxalarni tasodifiy nom bilan ALMASHTIRISH ma'lumot yo'qolishiga olib kelishi mumkin.

Shuning uchun StatefulSet uchta muhim kafolat beradi: (1) barqaror nomdb-0 doim db-0 bo'lib qoladi, hatto qayta yaratilsa ham; (2) barqaror diskdb-0ga biriktirilgan PersistentVolumeClaim uni QAYTA yaratilganda ham KUZATIB boradi (ma'lumot yo'qolmaydi); (3) tartibli yaratilish/o'chirish — db-1 faqat db-0 TAYYOR bo'lgandan keyin yaratiladi. Amalda qoida sodda: agar ilovangiz stateless bo'lsa (masalan, HTTP API server) — Deployment ishlating; agar u O'Z holatini SAQLASHI kerak bo'lsa (baza, navbat tizimi) — StatefulSet.

Key Takeaway

Key Takeaway:

Deployment — bir-birining o'rnini bemalol almashtira oladigan, holatsiz (stateless) Pod'lar uchun; StatefulSet — har birining o'ziga xos, barqaror nomi va diski bo'lishi SHART bo'lgan, holatga ega (stateful) tizimlar (masalan, ma'lumotlar bazasi) uchun ishlatiladi.

NEXT UP

Putting It All Together: A Mini Control Plane