ข้ามไปเนื้อหาหลัก
คอนเทนเนอร์· ~13 นาที· อัปเดตล่าสุด

จาก Pod เดี่ยว สู่ ReplicaSet

ทำไมต้องมีตัวเฝ้าให้ Pod ครบจำนวนเสมอ

ReplicaSet: คือ ตัวควบคุม (Controller) ชนิดหนึ่งที่ทำหน้าที่ดูแลให้จำนวน Pod มีตามจำนวนที่ระบุ (Replicas) เสมอ

หัวหน้ากะพนักงานหน้าร้าน

Pod เดี่ยว เหมือนพนักงานคนเดียว — ลาป่วยเมื่อไหร่ ร้านก็ปิด · ReplicaSet เหมือนหัวหน้ากะที่ได้รับคำสั่งว่า "ต้องมีพนักงานหน้าร้าน 3 คนเสมอ" — ใครหายไป รีบเรียกคนใหม่มาแทนทันทีให้ครบ 3

จากบทก่อนเรารู้ว่า Pod เดี่ยวถ้าล่มจะไม่มีใครสร้างใหม่ · ReplicaSet แก้ปัญหานี้ด้วยหน้าที่เดียวที่ชัดเจน: รักษาจำนวน Pod (replicas) ให้ตรงตามที่สั่งเสมอ

เราแก้ที่ Deployment ชั้นบน · ชั้นล่างจัดการให้เอง

Deploymentจัดการเวอร์ชัน + rollout
ReplicaSetรักษาจำนวน Pod = replicas
Podapp: web
Podapp: web
Podapp: web
ReplicaSet เฝ้าให้จำนวน Pod ตรงตาม replicas · Deployment (บทถัดไป) คุม ReplicaSet อีกชั้น

ReplicaSet ทำงานยังไง

  • ดูว่าตอนนี้มี Pod ที่ตรงกับ label selector อยู่กี่ตัว
  • ถ้าน้อยกว่า replicas → สร้าง Pod เพิ่ม · ถ้ามากกว่า → ลบ Pod ส่วนเกิน
  • ทำแบบนี้วนตลอดเวลา (reconciliation loop) = self-healing ระดับ Pod

สรุป Key Takeaways

  • ReplicaSet มีหน้าที่เดียว: รักษาจำนวน Pod ให้ตรง replicas เสมอ (self-healing ระดับ Pod)
  • มันจับคู่ Pod ด้วย label selector ไม่ใช่เป็นเจ้าของโดยตรง
  • งานจริงใช้ Deployment คุม ReplicaSet อีกชั้น ไม่สร้าง ReplicaSet เอง

คำถามที่พบบ่อย

สร้าง pod เดี่ยวๆ ทำไมถึงไม่พอ ต้องมี ReplicaSet

Pod เดี่ยวตายแล้วจบ — ไม่มีใครสร้างแทน (self-healing ไม่ทำงาน) ReplicaSet คือผู้จัดการที่สัญญาว่า "ต้องมี pod แบบนี้รันอยู่ N ตัวเสมอ" ตายก็สร้างใหม่ เกินก็ลบทิ้ง — ในทางปฏิบัติเราไม่สร้างทั้ง pod เดี่ยวและ ReplicaSet ตรงๆ แต่ใช้ Deployment ที่ครอบอีกชั้น

ReplicaSet รู้ได้ยังไงว่า pod ไหนเป็นของมัน

ผ่าน label selector — RS นับ pod ที่ label ตรงกับ selector ของมัน ไม่สนว่าใครสร้าง — ผลข้างเคียงที่ควรรู้: ถ้าสร้าง pod เปล่าที่ label ตรงกับ RS ที่มีอยู่ RS จะนับรวมและอาจลบ pod อื่นให้เหลือตามจำนวน

อ่านจบแล้วอย่าลืมทำเครื่องหมาย