กระจายฝักทั่วคลัสเตอร์

Aug 20 2020

ปัจจุบันโดยใช้นโยบายการปรับขนาดอัตโนมัติของ AWS เพื่อเริ่มต้นโหนดผู้ปฏิบัติงาน EKS (ขั้นต่ำ + 10 ที่ต้องการสูงสุด 15) ตามเวลาที่กำหนดทุกวัน มี 120 พ็อดและ 30 การปรับใช้

เห็นได้ชัดว่าในตอนแรกจะมีเพียงโหนดเดียวเท่านั้น จากนั้นโหนดที่สอง หลังจากนั้นโหนดสุดท้ายจะขึ้น ด้วยเหตุนี้ Kubernetes จึงเพิ่มพ็อดทั้งหมดในโหนดแรก มีวิธีใดบ้างที่จะกระจายพ็อดอย่างเท่าเทียมกันในสถานการณ์นี้?

คำตอบ

1 EduardoBaitello Oct 23 2020 at 21:30

ลองดูที่ที่Descheduler โปรเจ็กต์นี้ทำงานเป็น Kubernetes Job ที่มีเป้าหมายในการฆ่าพ็อดเมื่อคิดว่าคลัสเตอร์ไม่สมดุล

LowNodeUtilizationกลยุทธ์ดูเหมือนว่าจะพอดีกับกรณีของคุณ:

กลยุทธ์นี้ค้นหาโหนดที่ใช้งานไม่ได้และขับไล่พ็อดออกจากโหนดอื่น ๆ หากเป็นไปได้โดยหวังว่าการสร้างพ็อดที่ถูกขับไล่จะถูกกำหนดเวลาไว้ในโหนดที่ไม่ได้ใช้งานเหล่านี้


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

คุณสามารถใช้ไฟล์kubectl rollout restart my-deployment. เป็นวิธีที่ดีกว่าการลบพ็อดเพียงอย่างkubectl delete podเดียวเนื่องจากการเปิดตัวจะช่วยให้มั่นใจได้ว่าจะพร้อมใช้งานในระหว่าง "การปรับสมดุลใหม่" (แม้ว่าการลบพ็อดทั้งหมดจะเพิ่มโอกาสในการปรับสมดุลที่ดีขึ้น)

2 joshk132 Aug 21 2020 at 09:19

คุณควรพิจารณาถึงความสัมพันธ์และการต่อต้านความสัมพันธ์เนื่องจากช่วยให้คุณควบคุมได้ว่าพ็อดใดไปที่โหนดใด คุณสามารถมีได้เพื่อให้การต่อต้านความสัมพันธ์มีเพียง 1 พ็อดของการปรับใช้แต่ละครั้งบนโหนด นี่เป็นการใช้งานมากเกินไปและจะไม่ได้ผลสำหรับคุณอย่างแน่นอนแม้ว่า IIRC คุณสามารถมีหลายพ็อดบนโหนดได้โดยมีขีด จำกัด

https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes-using-node-affinity/