มลทินและการยอมรับมลทิน
ป้องกันไม่ให้จัดตาราง 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 นั้น ผลลัพธ์หลักมีสามแบบ:
NoSchedulePreferNoScheduleNoExecute
มาดูแต่ละแบบกัน
ผลลัพธ์ของ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- คำขอและขีดจำกัดทรัพยากร
- ตัวเลือกโหนดและความสอดคล้อง
- มลทินและการยอมรับมลทิน
- ลำดับความสำคัญและการแย่งทรัพยากรของ Pod