0Pricing
DevOps Bootcamp · บทเรียน

มลทินและการยอมรับมลทิน

ป้องกันไม่ให้จัดตาราง Pod บนโหนดที่ระบุโดยใช้มลทิน และอนุญาตให้ Pod บางรายการยอมรับมลทินเหล่านั้น

มลทินและการยอมรับมลทิน เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

Taint คืออะไร

ลองนึกภาพว่าคุณมีโหนดพิเศษในคลัสเตอร์ Kubernetes ซึ่งอาจมีฮาร์ดแวร์เฉพาะอย่าง GPU หรือสงวนไว้สำหรับงานบางประเภท คุณคงไม่ต้องการให้พ็อดใด ๆ ก็ได้ไปทำงานบนนั้นใช่ไหม

นี่คือสิ่งที่ Taint ช่วยจัดการ Taint คือคุณสมบัติที่ใช้กับโหนดเพื่อป้องกันไม่ให้มีการจัดตารางเวลาพ็อดบนโหนดนั้น เว้นแต่พ็อดจะ “ยอมรับ” Taint ดังกล่าวอย่างชัดเจน

เหตุผลที่ควรใช้ Taint

Taint มีประโยชน์อย่างมากสำหรับจัดการตำแหน่งที่พ็อดทำงาน:

  • โหนดเฉพาะ: สงวนโหนดไว้สำหรับทีมหรือแอปพลิเคชันบางประเภท
  • ฮาร์ดแวร์พิเศษ: แยกโหนดที่มี GPU หรือ SSD ประสิทธิภาพสูงไว้สำหรับพ็อดที่ต้องใช้
  • การบำรุงรักษา: ทำเครื่องหมายโหนดเพื่อบำรุงรักษา และป้องกันไม่ให้จัดตารางเวลาพ็อดใหม่ลงบนโหนดนั้นชั่วคราว

Taint ทำงานอย่างไร

ลองมอง Taint เป็นป้าย “ห้ามบุกรุก” บนโหนด พ็อดจะเพิกเฉยต่อป้ายนี้ได้ก็ต่อเมื่อมี “ใบอนุญาต” ที่ตรงกัน ซึ่งเรียกว่า Toleration

Taint ประกอบด้วยคีย์ ค่า และผลลัพธ์ ตัวอย่างเช่น key=value:effect

ทำความเข้าใจผลลัพธ์ของ Taint

ส่วน “ผลลัพธ์” ของ Taint จะบอก Kubernetes ว่าต้องทำอย่างไรกับพ็อดที่ไม่ยอมรับ Taint นั้น ผลลัพธ์หลักมีสามแบบ:

  • NoSchedule
  • PreferNoSchedule
  • NoExecute

มาดูแต่ละแบบกัน

ผลลัพธ์ของ Taint: NoSchedule

ผลลัพธ์ NoSchedule เข้มงวดที่สุด หากโหนดมี Taint ที่เป็น NoSchedule จะไม่มีพ็อดใดถูกจัดตารางเวลาบนโหนดนั้น เว้นแต่จะมี Toleration ที่ตรงกัน

พ็อดที่ทำงานอยู่บนโหนดนั้นแล้วจะไม่ได้รับผลกระทบจาก Taint NoSchedule ที่เพิ่มเข้ามาใหม่

ผลลัพธ์ของ Taint: PreferNoSchedule

PreferNoSchedule เป็นรูปแบบ “ผ่อนปรน” ของ NoSchedule Kubernetes จะพยายามอย่างเต็มที่เพื่อหลีกเลี่ยงการจัดตารางเวลาพ็อดบนโหนดที่มี Taint แต่ไม่ใช่ข้อกำหนดที่บังคับอย่างเข้มงวด

หากไม่มีโหนดอื่นที่เหมาะสม พ็อดก็อาจยังถูกจัดตารางเวลาบนโหนดที่มี Taint PreferNoSchedule ได้ แม้จะไม่มี Toleration ก็ตาม

ผลลัพธ์ของ Taint: NoExecute

ผลลัพธ์ NoExecute มีลักษณะเฉพาะ เพราะส่งผลต่อพ็อดที่*กำลังทำงานอยู่แล้ว* หากโหนดมี Taint NoExecute:

  • พ็อดที่ไม่มี Toleration ตรงกันจะถูก*ขับออกทันที*
  • พ็อดใหม่ที่ไม่มี Toleration ตรงกันจะไม่สามารถถูกจัดตารางเวลาได้

มักใช้วิธีนี้เมื่อถ่ายงานออกจากโหนดหรือจัดการกับความล้มเหลวของโหนด

แนะนำ Toleration

ขณะที่ Taint ใช้กับโหนด Tolerationจะใช้กับพ็อด Toleration ของพ็อดจะอนุญาตให้พ็อดถูกจัดตารางเวลาบนโหนดที่มี Taint ตรงกัน

หากไม่มี Toleration ที่ตรงกัน พ็อดจะไม่สามารถ หรือจะพยายามหลีกเลี่ยงการ ถูกจัดตารางเวลาบนโหนดที่มี Taint

Toleration ในไฟล์กำหนดค่าพ็อด

คุณกำหนด Toleration ภายในไฟล์กำหนดค่าพ็อด ในส่วน spec ต่อไปนี้เป็นวิธีให้พ็อดยอมรับ Taint ที่มีค่า key=value:NoSchedule:

apiVersion: v1
kind: Pod
metadata:
  name: my-tolerated-pod
spec:
  containers:
  - name: nginx
    image: nginx
  tolerations:
  - key: "special-purpose"
    operator: "Equal"
    value: "gpu"
    effect: "NoSchedule"

Taint และ Toleration จับคู่กันอย่างไร

เพื่อให้พ็อดถูกจัดตารางเวลาบนโหนดที่มี Taint ค่า Toleration ของพ็อดต้องตรงกับ Taint ของโหนด การจับคู่ประกอบด้วย:

  • คีย์: ต้องเหมือนกัน
  • ค่า: ต้องเหมือนกันหาก operator: Equal
  • ผลลัพธ์: ต้องเหมือนกัน
  • ตัวดำเนินการ: อาจเป็น Equal หรือ Exists (หมายถึงใช้ค่าใดก็ได้สำหรับคีย์นั้น)

Toleration พิเศษ key: "" operator: Exists จะยอมรับ Taint ใด ๆ

ตรวจสอบอย่างรวดเร็ว: Taint

โหนดมี Taint env=production:NoSchedule การกำหนดค่าพ็อดแบบใดจะทำให้พ็อดถูกจัดตารางเวลาบนโหนดนี้ได้

สรุป: Taint และ Toleration

คุณได้เรียนรู้เกี่ยวกับ Taint และ Toleration แล้ว

  • Taint ใช้กับโหนดเพื่อผลักพ็อดออก
  • Toleration ใช้กับพ็อดเพื่ออนุญาตให้พ็อดถูกจัดตารางเวลาบนโหนดที่มี Taint
  • ผลลัพธ์สำคัญของ Taint ได้แก่ NoSchedule, PreferNoSchedule และ NoExecute
  • Toleration ต้องตรงกับคีย์ ค่า และผลลัพธ์ของ Taint จึงจะจัดตารางเวลาพ็อดได้

เครื่องมือเหล่านี้ช่วยให้คุณควบคุมตำแหน่งของพ็อดได้อย่างละเอียด

คำถามที่พบบ่อย

บทเรียน “มลทินและการยอมรับมลทิน” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “มลทินและการยอมรับมลทิน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “มลทินและการยอมรับมลทิน”

ป้องกันไม่ให้จัดตาราง Pod บนโหนดที่ระบุโดยใช้มลทิน และอนุญาตให้ Pod บางรายการยอมรับมลทินเหล่านั้น คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “มลทินและการยอมรับมลทิน” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม

ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. คำขอและขีดจำกัดทรัพยากร
  2. ตัวเลือกโหนดและความสอดคล้อง
  3. มลทินและการยอมรับมลทิน
  4. ลำดับความสำคัญและการแย่งทรัพยากรของ Pod
← กลับไปที่ DevOps Bootcamp