กระจายฝักทั่วคลัสเตอร์
ปัจจุบันโดยใช้นโยบายการปรับขนาดอัตโนมัติของ AWS เพื่อเริ่มต้นโหนดผู้ปฏิบัติงาน EKS (ขั้นต่ำ + 10 ที่ต้องการสูงสุด 15) ตามเวลาที่กำหนดทุกวัน มี 120 พ็อดและ 30 การปรับใช้
เห็นได้ชัดว่าในตอนแรกจะมีเพียงโหนดเดียวเท่านั้น จากนั้นโหนดที่สอง หลังจากนั้นโหนดสุดท้ายจะขึ้น ด้วยเหตุนี้ Kubernetes จึงเพิ่มพ็อดทั้งหมดในโหนดแรก มีวิธีใดบ้างที่จะกระจายพ็อดอย่างเท่าเทียมกันในสถานการณ์นี้?
คำตอบ
ลองดูที่ที่Descheduler โปรเจ็กต์นี้ทำงานเป็น Kubernetes Job ที่มีเป้าหมายในการฆ่าพ็อดเมื่อคิดว่าคลัสเตอร์ไม่สมดุล
LowNodeUtilizationกลยุทธ์ดูเหมือนว่าจะพอดีกับกรณีของคุณ:
กลยุทธ์นี้ค้นหาโหนดที่ใช้งานไม่ได้และขับไล่พ็อดออกจากโหนดอื่น ๆ หากเป็นไปได้โดยหวังว่าการสร้างพ็อดที่ถูกขับไล่จะถูกกำหนดเวลาไว้ในโหนดที่ไม่ได้ใช้งานเหล่านี้
อีกทางเลือกหนึ่งคือใช้วิศวกรรมความโกลาหลเล็กน้อยด้วยตนเองบังคับให้มีการอัปเดตแบบโรลลิ่งในการปรับใช้ของคุณและหวังว่าตัวกำหนดตารางเวลาจะแก้ไขปัญหาความสมดุลเมื่อมีการสร้างพ็อดใหม่
คุณสามารถใช้ไฟล์kubectl rollout restart my-deployment
. เป็นวิธีที่ดีกว่าการลบพ็อดเพียงอย่างkubectl delete pod
เดียวเนื่องจากการเปิดตัวจะช่วยให้มั่นใจได้ว่าจะพร้อมใช้งานในระหว่าง "การปรับสมดุลใหม่" (แม้ว่าการลบพ็อดทั้งหมดจะเพิ่มโอกาสในการปรับสมดุลที่ดีขึ้น)
คุณควรพิจารณาถึงความสัมพันธ์และการต่อต้านความสัมพันธ์เนื่องจากช่วยให้คุณควบคุมได้ว่าพ็อดใดไปที่โหนดใด คุณสามารถมีได้เพื่อให้การต่อต้านความสัมพันธ์มีเพียง 1 พ็อดของการปรับใช้แต่ละครั้งบนโหนด นี่เป็นการใช้งานมากเกินไปและจะไม่ได้ผลสำหรับคุณอย่างแน่นอนแม้ว่า IIRC คุณสามารถมีหลายพ็อดบนโหนดได้โดยมีขีด จำกัด
https://kubernetes.io/docs/tasks/configure-pod-container/assign-pods-nodes-using-node-affinity/