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

ทำไม Pod IP เชื่อถือไม่ได้ — ต้องมี Service

Pod เกิด-ดับตลอด IP เปลี่ยนเรื่อย ๆ Service ให้ที่อยู่คงที่

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

Pod เหมือนพนักงานส่งของที่ลาออก-เข้าใหม่บ่อย เบอร์มือถือ (IP) เปลี่ยนตลอด · Service เหมือนเบอร์กลางของแผนก ที่ลูกค้าโทรเข้าเบอร์เดียว แล้วมีระบบต่อสายไปให้พนักงานคนที่ว่างอยู่ — ไม่ต้องรู้เบอร์ใครเป็นการส่วนตัว

ทุกครั้งที่ Pod ถูกสร้างใหม่ (เพราะล่ม, scale, rolling update) มันได้ IP ใหม่ เสมอ · ถ้าแอปอื่นจำ IP ของ Pod ไว้ตรง ๆ พอ Pod นั้นหายก็พังทันที

Service = ที่อยู่คงที่ + load balancing หน้ากลุ่ม Pod

Clientในคลัสเตอร์
เรียกชื่อ web
Service: webClusterIP คงที่
▼ กระจายโหลด (selector app=web)
PodIP เปลี่ยนได้
PodIP เปลี่ยนได้
PodIP เปลี่ยนได้
Service = ที่อยู่ + ชื่อคงที่ ด้านหน้ากลุ่ม Pod · เลือก Pod ด้วย label selector และกระจายโหลดให้

Service แก้ปัญหานี้ด้วยการเป็นจุดเข้าถึงคงที่ (IP + ชื่อ DNS ที่ไม่เปลี่ยน) วางไว้หน้ากลุ่ม Pod แล้วใช้ label selector จับว่าจะส่ง traffic ให้ Pod ตัวไหน พร้อม load balancing ให้ในตัว

สรุป Key Takeaways

  • Pod ได้ IP ใหม่ทุกครั้งที่สร้างใหม่ — อย่าจำ IP ของ Pod
  • Service = ที่อยู่/ชื่อคงที่หน้ากลุ่ม Pod + load balancing ในตัว
  • Service จับ Pod ด้วย label selector เหมือน Deployment
อ่านจบแล้วอย่าลืมทำเครื่องหมาย