ทำไม Pod IP เชื่อถือไม่ได้ — ต้องมี Service
Pod เกิด-ดับตลอด IP เปลี่ยนเรื่อย ๆ Service ให้ที่อยู่คงที่
Service: คือ สิ่งที่ทำหน้าที่เป็น "หน้าด่าน" หรือจุดเข้าถึงแบบตายตัวให้กับ Pod เนื่องจาก Pod นั้นมีการเกิดดับตลอดเวลาทำให้ IP ไม่คงที่ Service จะคอยรับ Traffic แล้วส่งต่อไปให้ Pod ที่ทำงานอยู่
Pod เหมือนพนักงานส่งของที่ลาออก-เข้าใหม่บ่อย เบอร์มือถือ (IP) เปลี่ยนตลอด · Service เหมือนเบอร์กลางของแผนก ที่ลูกค้าโทรเข้าเบอร์เดียว แล้วมีระบบต่อสายไปให้พนักงานคนที่ว่างอยู่ — ไม่ต้องรู้เบอร์ใครเป็นการส่วนตัว
ทุกครั้งที่ Pod ถูกสร้างใหม่ (เพราะล่ม, scale, rolling update) มันได้ IP ใหม่ เสมอ · ถ้าแอปอื่นจำ IP ของ Pod ไว้ตรง ๆ พอ Pod นั้นหายก็พังทันที
Service = ที่อยู่คงที่ + load balancing หน้ากลุ่ม Pod
Service แก้ปัญหานี้ด้วยการเป็นจุดเข้าถึงคงที่ (IP + ชื่อ DNS ที่ไม่เปลี่ยน) วางไว้หน้ากลุ่ม Pod แล้วใช้ label selector จับว่าจะส่ง traffic ให้ Pod ตัวไหน พร้อม load balancing ให้ในตัว
kubectl get svc
kubectl get endpoints <service-name>สรุป Key Takeaways
- Pod ได้ IP ใหม่ทุกครั้งที่สร้างใหม่ — อย่าจำ IP ของ Pod
- Service = ที่อยู่/ชื่อคงที่หน้ากลุ่ม Pod + load balancing ในตัว
- Service จับ Pod ด้วย label selector เหมือน Deployment
คำถามที่พบบ่อย
ทำไมเรียก pod ด้วย IP ตรงๆ ไม่ได้
Pod IP เปลี่ยนทุกครั้งที่ pod เกิดใหม่ (deploy, scale, node ย้าย) — Service คือ IP/ชื่อที่ "นิ่ง" ยืนอยู่หน้า pod กลุ่มหนึ่ง คอยกระจาย traffic ไปยัง pod ที่ยังมีชีวิตผ่าน label selector — คิดว่ามันคือ load balancer ภายในจิ๋วๆ ของแต่ละแอป
Service เลือก pod ยังไง แล้ว pod ที่ยังไม่พร้อมโดนส่ง traffic ไหม
เลือกด้วย label selector และส่งเฉพาะ pod ที่ผ่าน readiness probe เท่านั้น — pod ที่กำลัง start หรือป่วยจะถูกถอดจาก endpoints ชั่วคราว นี่คือเหตุผลที่ readiness probe สำคัญมากต่อ zero-downtime deploy

