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

เลือก node ให้ Pod: nodeSelector และ Affinity

บังคับ/แนะนำว่า Pod ควรไปอยู่ node แบบไหน

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

เหมือนจัดที่นั่งงานเลี้ยง: nodeSelector = กฎง่าย ๆ "ต้องนั่งโซนที่มีป้าย VIP" · affinity = กฎละเอียด "อยากนั่งใกล้ทีมเดียวกัน (affinity) แต่แยกจากคู่แข่ง (anti-affinity)"

ปกติ scheduler เลือก node ให้เอง แต่บางครั้งเราต้องชี้นำ เช่น "Pod นี้ต้องรันบน node ที่มี GPU" หรือ "กระจาย replica ไปคนละ node เพื่อ HA"

  • nodeSelector — จับคู่ label ของ node ง่าย ๆ (เช่น disktype: ssd) แบบบังคับ
  • nodeAffinity — เหมือน nodeSelector แต่ยืดหยุ่นกว่า มีทั้งแบบบังคับ (required) และแบบแนะนำ (preferred)
  • podAffinity — อยากให้ Pod อยู่ใกล้ Pod อื่น (เช่น cache อยู่ node เดียวกับ app)
  • podAntiAffinity — อยากให้ Pod แยกจากกัน (เช่น กระจาย 3 replica คนละ node เพื่อทน node ล่ม)

สรุป Key Takeaways

  • nodeSelector = จับ label node ง่าย ๆ · nodeAffinity = ยืดหยุ่นกว่า (required/preferred)
  • podAffinity = อยู่ใกล้กัน · podAntiAffinity = แยกจากกัน (ใช้ทำ HA)
  • กระจาย replica ข้าม node/zone ด้วย anti-affinity หรือ topologySpreadConstraints
อ่านจบแล้วอย่าลืมทำเครื่องหมาย