PlusMagi's Blog By Pitt Phunsanit

Kubernetes: Deployment และ ReplicaSet

การทำความเข้าใจเรื่อง Deployment และ ReplicaSet (มักจะพิมพ์ผิดหรือเรียกย่อกันว่า replica/republica) ใน Kubernetes (K8s) เป็นหัวใจสำคัญของการจัดการแอปพลิเคชันให้ทำงานได้แบบไม่มีล่ม (High Availability) และขยายระบบได้ง่ายครับ

เพื่อให้เห็นภาพชัดเจน เรามาดูหน้าที่และความสัมพันธ์ของทั้งสองตัวนี้กันครับ


Kubernetes Deployment คืออะไร?

Deployment เป็น Object ระดับสูงใน Kubernetes ที่ทำหน้าที่ควบคุมและจัดการแอปพลิเคชันของเรา โดยเราจะบอก Deployment ว่า “ฉันต้องการให้แอปพลิเคชันเวอร์ชันนี้ หน้าตาแบบนี้ รันอยู่บนระบบนะ” แล้ว Deployment จะไปจัดการส่วนที่เหลือให้เอง

หน้าที่หลักของ Deployment


ReplicaSet (หรือที่ระบบชอบเรียกว่า Replica) คืออะไร?

คำว่า “replica” แปลตรงตัวคือ “สําเนา” ส่วน ReplicaSet คือ Object ที่ทำหน้าที่ “ปั๊มและควบคุมจำนวนสำเนา (Pod)” ให้ตรงตามจำนวนที่เราสั่งไว้ตลอดเวลา

หน้าที่หลักของ ReplicaSet


ความสัมพันธ์ของ Deployment และ ReplicaSet / Replica

ถ้าจะให้อธิบายให้เห็นภาพง่ายที่สุด

Deployment คือ “ผู้จัดการใหญ่” ส่วน ReplicaSet คือ “หัวหน้างานหน้างาน” และ Pod คือ “พนักงาน (ตัวแอปพลิเคชัน)”

ความสัมพันธ์ของมันจะทำงานร่วมกันเป็นชั้น ๆ (Hierarchy) ดังนี้ครับ

[ Deployment ]  <-- ควบคุมนโยบาย, การอัปเดตเวอร์ชัน (V1 -> V2)
      |
      v
[ ReplicaSet ]  <-- ควบคุมจำนวนสำเนา (เช่น ต้องมี 3 ตัวเสมอ)
      |
  +---+---+
  |   |   |
[Pod][Pod][Pod] <-- ตัวแอปพลิเคชันที่ทำงานจริง

กระบวนการทำงานร่วมกันตอนอัปเดตระบบ (Rollout)

ความสัมพันธ์นี้จะชัดเจนที่สุดเวลาเราสั่ง อัปเดตเวอร์ชันแอปพลิเคชัน

  1. Deployment จะสร้าง ReplicaSet ตัวใหม่ขึ้นมา: สมมติแอปเดิมเป็น V1 (ควบคุมโดย ReplicaSet-V1) พอเราสั่งอัปเดตเป็น V2 ตัว Deployment จะสร้าง ReplicaSet-V2 ขึ้นมาใหม่
  2. ทยอยเปลี่ยนไม้ (Rolling Update): Deployment จะสั่งให้ ReplicaSet-V2 ค่อยๆ เปิด Pod V2 ขึ้นมาทีละตัว และสั่งให้ ReplicaSet-V1 ค่อยๆ ลดจำนวน Pod V1 ลงทีละตัว
  3. เก็บประวัติไว้ย้อนกลับ: เมื่ออัปเดตเสร็จแล้ว Pod V1 จะเหลือ 0 ตัว แต่ ReplicaSet-V1 จะยังไม่ถูกลบไป เพื่อให้ Deployment สามารถสั่ง Rollback ย้อนกลับมาใช้สำเนาเดิมได้ทันทีหากเวอร์ชัน V2 มีปัญหา

สรุปความต่างสั้น ๆ


อ่านเพิ่มเติม

Exit mobile version