ข้ามไปเนื้อหาหลัก
คอนเทนเนอร์· ~14 นาที

Probes — ตรวจสุขภาพ Pod

liveness / readiness / startup บอก K8s ว่า Pod พร้อมหรือป่วย

เปรียบเทียบให้เห็นภาพ

เหมือนหมอตรวจคนไข้: liveness = "ยังมีชีพจรไหม" (ไม่มี → ปั๊มหัวใจ/restart) · readiness = "พร้อมทำงานรับแขกหรือยัง" (ไม่พร้อม → พักไว้ก่อน ยังไม่ส่งงานให้) · startup = "ให้เวลาฟื้นตอนเพิ่งตื่น" (แอปที่บูตนาน)

K8s รู้ว่า container "รันอยู่" แต่ไม่รู้ว่ามัน "ทำงานได้จริง" ไหม · Probes คือการตรวจสุขภาพที่เราสั่งให้ K8s ยิงเช็คเป็นระยะ

3 probe หน้าที่ต่างกัน

livenessล้มเหลว → restart container
readinessล้มเหลว → ถอดออกจาก Service (ไม่ส่ง traffic)
startupล้มเหลว → กันเช็คเร็วเกินตอนแอปบูตนาน
liveness ล้มเหลว → restart · readiness ล้มเหลว → ถอดออกจาก Service (ไม่ส่ง traffic) · startup กันเช็คเร็วเกินตอนบูต
  • livenessProbe — เช็คว่ายังมีชีวิต ถ้าล้มเหลวต่อเนื่อง K8s restart container
  • readinessProbe — เช็คว่าพร้อมรับ traffic ไหม ถ้าไม่พร้อม ถอด Pod ออกจาก Service ชั่วคราว (ไม่ส่ง request มา) แต่ไม่ restart
  • startupProbe — สำหรับแอปที่บูตนาน กัน liveness เช็คเร็วเกินจน restart วนไม่จบ
readinessProbe:
  httpGet: { path: /healthz, port: 8080 }
  initialDelaySeconds: 5
  periodSeconds: 10
livenessProbe:
  httpGet: { path: /healthz, port: 8080 }
  initialDelaySeconds: 15
  periodSeconds: 20
ตัวอย่าง readiness + liveness แบบ HTTP

สรุป Key Takeaways

  • liveness ล้มเหลว → restart container · readiness ล้มเหลว → เลิกส่ง traffic (ไม่ restart)
  • startupProbe สำหรับแอปบูตนาน กัน liveness ฆ่าก่อนพร้อม
  • readiness ช่วยให้ rolling update ไม่ส่ง traffic ให้ Pod ที่ยังไม่พร้อม
อ่านจบแล้วอย่าลืมทำเครื่องหมาย