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

Taints และ Tolerations — กัน Pod ออกจาก node

ทำเครื่องหมาย node ให้รับเฉพาะ Pod ที่ได้รับอนุญาต

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

Taint เหมือนป้าย "ห้ามเข้า เว้นแต่มีบัตรผ่าน" ที่ติดบน node · Toleration คือบัตรผ่านที่ Pod ถือมา · Pod ที่ไม่มีบัตรตรงกับป้ายจะไม่ถูกวางบน node นั้น

Affinity คือ Pod "เลือก" node · Taint/Toleration ทำกลับกัน — node "ผลัก" Pod ออก เว้นแต่ Pod จะ tolerate ได้ · ใช้กันงานทั่วไปออกจาก node พิเศษ

node ที่ taint รับเฉพาะ Pod ที่มี toleration ตรงกัน

node ธรรมดา
Pod ทั่วไป
Pod ทั่วไป
node: taint gpu=true 🚫
Pod ML🎫 toleration gpu
Pod ทั่วไปถูกผลักไป node ซ้าย
node ที่ taint จะรับเฉพาะ Pod ที่มี toleration ตรงกัน — Pod ทั่วไปถูกผลักไป node อื่น
# ติด taint: node นี้รับเฉพาะ Pod ที่ tolerate gpu=true
kubectl taint nodes node-1 gpu=true:NoSchedule

# Pod ที่จะขึ้น node นี้ได้ต้องมี toleration:
#   tolerations:
#     - key: "gpu"
#       operator: "Equal"
#       value: "true"
#       effect: "NoSchedule"
ติด taint บน node (เช่นกัน GPU node ไว้ให้งาน ML)

สรุป Key Takeaways

  • Taint = node ผลัก Pod ออก · Toleration = บัตรผ่านที่ Pod ถือ
  • ตรงข้ามกับ affinity (Pod เลือก node) — taint คือ node กัน Pod
  • effect: NoSchedule/PreferNoSchedule/NoExecute · มักคู่กับ affinity สงวน node พิเศษ
อ่านจบแล้วอย่าลืมทำเครื่องหมาย