คอนเทนเนอร์· ~15 นาที
StatefulSet — workload ที่มี identity (+ Lab)
ฐานข้อมูล/คิวที่แต่ละ Pod ต้องมีชื่อและ storage คงที่
Deployment ปฏิบัติกับ Pod เหมือนพนักงานชั่วคราวที่สลับกันได้ (ใครก็ได้) · StatefulSet เหมือนพนักงานที่มีโต๊ะประจำและชื่อประจำ — Pod-0, Pod-1, Pod-2 มีลำดับและ storage เป็นของตัวเองไม่สลับกัน
งานที่มี state (ฐานข้อมูล, Kafka, Redis cluster) ต้องการ 3 อย่างที่ Deployment ให้ไม่ได้: ชื่อ/ลำดับคงที่, storage ติดตัวแต่ละ Pod, และการสร้าง/ลบตามลำดับ · StatefulSet ให้ครบ
แต่ละ Pod มีชื่อคงที่ + PVC ของตัวเอง ไม่สลับกัน
web-0ชื่อคงที่
▼pvc-0storage ติดตัว
web-1ชื่อคงที่
▼pvc-1storage ติดตัว
web-2ชื่อคงที่
▼pvc-2storage ติดตัว
สร้างตามลำดับ 0→1→2 · Pod สร้างใหม่ได้ PVC เดิมกลับมา
- ชื่อคงที่ — Pod ชื่อ
<name>-0,-1,-2ตามลำดับ (ไม่สุ่มเหมือน Deployment) - storage ติดตัว — แต่ละ Pod ได้ PVC ของตัวเอง ที่ผูกกลับมาแม้ Pod สร้างใหม่
- ลำดับ — สร้าง 0→1→2, ลบ 2→1→0 (สำคัญกับ cluster ที่มี leader/follower)
- มักคู่กับ Headless Service (clusterIP: None) เพื่อให้เข้าถึงแต่ละ Pod ตรง ๆ ด้วยชื่อ
สรุป Key Takeaways
- StatefulSet = workload ที่ต้องมี identity คงที่ + storage ติดตัว + ลำดับ (DB, Kafka, Redis)
- Pod มีชื่อคงที่ (name-0/1/2) และ PVC ของตัวเองที่ผูกกลับมา
- มักคู่กับ Headless Service · stateless ทั่วไปยังใช้ Deployment
- พิจารณา managed DB ของ cloud ก่อนรัน DB เองบน K8s
อ่านจบแล้วอย่าลืมทำเครื่องหมาย

