นี่เป็นปัญหาที่เกิดขึ้นเมื่อมีการกำหนดเวลาพ็อดได้ทุกที่ คุณมาถูกทางแล้วกับกฎความสัมพันธ์
คุณสามารถทำให้พ็อดเหล่านี้แสดงความสัมพันธ์ที่ต่อต้านซึ่งกันและกันได้โดยทำให้พ็อดภายในชุดจำลองของการปรับใช้แสดงความสัมพันธ์เชิงลบซึ่งกันและกัน (ดังนั้นพวกมันจึงกระจายไปตามโหนด) สิ่งนี้ทำให้การตั้งเวลาค่อนข้างหนัก แต่ก็ช่วยป้องกันไม่ให้พ็อดทำให้เกิดความล้มเหลวแบบเรียงซ้อนเมื่อโหนดสูญหาย นอกจากนี้ยังทำหน้าที่ได้ค่อนข้างดีในการตรวจสอบให้แน่ใจว่าพวกมันกระจายไปตามโดเมนที่ล้มเหลว แต่นั่นเป็นผลข้างเคียงมากกว่า
อย่างไรก็ตาม มีวิธีที่ดีกว่าในการบรรลุสิ่งนี้ - ผ่านข้อจำกัดการแพร่กระจายของโทโพโลยีแบบพ็อด เมื่อระบุข้อจำกัดการแพร่กระจาย ตัวกำหนดตารางเวลาจะทำให้แน่ใจว่าพ็อดมีความสมดุลระหว่างโดเมนความล้มเหลว (ไม่ว่าจะเป็น AZ หรือโหนด) และการไม่ปรับสมดุลของพ็อดจะส่งผลให้ไม่สามารถจัดกำหนดการได้
เราสามารถเขียนสิ่งนี้ในลักษณะที่รับประกันว่าพ็อดจะกระจายไปตามโหนด และความล้มเหลวของโหนดจะไม่ทำให้เกิดการ "มัดรวมกัน" ลองดูพ็อดตัวอย่างนี้:
ชนิด: ฝัก
api เวอร์ชัน: v1
ข้อมูลเมตา:
ชื่อ: มายพอด
ป้ายกำกับ:
ฟู: บาร์
ข้อมูลจำเพาะ:
โทโพโลยีการแพร่กระจายข้อจำกัด:
- ความเอียงสูงสุด: 1
โทโพโลยีคีย์: โซน
เมื่อไม่พอใจ: DoNotSchedule
ตัวเลือกป้ายกำกับ:
ป้ายกำกับการแข่งขัน:
ฟู: บาร์
- ความเอียงสูงสุด: 1
โทโพโลยีคีย์: โหนด
เมื่อไม่พอใจ: DoNotSchedule
ตัวเลือกป้ายกำกับ:
ป้ายกำกับการแข่งขัน:
ฟู: บาร์
ตู้คอนเทนเนอร์:
- ชื่อ: หยุดชั่วคราว
รูปภาพ: k8s.gcr.io/pause:3.1
สิ่งนี้สามารถใช้ร่วมกับกฎความสัมพันธ์ หากคุณไม่ต้องการให้การปรับใช้และชุดจำลองของพวกเขากำหนดเวลากับการปรับใช้อื่นๆ บนโหนดเดียวกัน ซึ่งช่วยลดผลกระทบ "รวม" ลงไปอีก โดยทั่วไปแล้ว การต่อต้านความสัมพันธ์แบบอ่อนจะเหมาะสมในกรณีเช่นนี้ ดังนั้นตัวกำหนดตารางเวลาจะ "พยายามไม่" จัดวางเวิร์กโหลดเหล่านั้นเมื่อเป็นไปได้