Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

Kubernetes Scheduler: ควบคุมประสิทธิภาพ ความจุ และความพร้อมใช้งานผ่านนโยบายและ Topology Awareness

Kubernetes scheduler เป็นส่วนของแพลตฟอร์มออร์เคสเตรชันคอนเทนเนอร์ Kubernetes โอเพนซอร์สที่ควบคุมประสิทธิภาพ ความจุ และความพร้อมใช้งานผ่านนโยบายและ topology awareness

Scheduler เป็นคอมโพเนนต์แบบมอโนลิธิกของ Kubernetes แยกจาก API server ที่จัดการคลัสเตอร์ มันไม่ใช่ admission controller ซึ่งเป็นโค้ดปลั๊กอินที่ขอร้องขอไปยัง Kubernetes API ผู้ดูแลเสมือนจริงจะเห็น Kubernetes scheduling ว่าเป็นค่าเทียบเท่าของการจัดตารางเวลา VM ในการคอนเทนเนอร์ เช่น VMware Distributed Resource Scheduler

Kubernetes ปรับใช้คอนเทนเนอร์ที่จัดกลุ่มเป็น Pods ที่อยู่บนการจัดกลุ่มทรัพยากรตรรกะที่เรียกว่า Nodes ข้อกำหนดเฉพาะของ workload ตั้งค่าผ่าน API Kubernetes scheduler พยายามจับคู่แต่ละ Pod ที่สร้างโดย Kubernetes กับชุดทรัพยากร IT ที่เหมาะสมบน Node มันยังสามารถกระจายสำเนาของ Pods ข้าม Nodes ต่างๆ สำหรับ high availability หากต้องการคุณสมบัตินั้น

หาก Kubernetes scheduler ไม่พบฮาร์ดแวร์ที่ตรงกับข้อกำหนดและสเปคของ Pod จากกฎ affinity และ anti-affinity ไปจนถึงการตั้งค่า quality of service Pod นั้นจะถูกทิ้งไว้ unscheduled และ scheduler จะลองใหม่จนกว่าแมชชีนจะพร้อมใช้งาน

การกำหนดค่า

Kubernetes scheduler กำหนดค่าได้ด้วยสองนโยบายที่แตกต่างกัน: PriorityFunction และ FitPredicate มันยังสามารถเลือก Node แบบสุ่มได้ ซึ่งเป็นวิธีกำหนดคอนเทนเนอร์ให้ทรัพยากรด้วย overhead การคำนวณน้อยที่สุด

นโยบาย FitPredicate ปฏิบัติตามกฎที่จำเป็น พร้อมพยายามตรวจจับ labels บน Kubernetes Node หรือตรวจจับจำนวนทรัพยากรที่ขอโดยคอนเทนเนอร์ที่รันอยู่บนแมชชีนที่กำหนด FitPredicate ช่วยตรวจจับว่าคอนเทนเนอร์เกินความจุของทรัพยากรฮาร์ดแวร์ที่กำหนดหรือไม่ หากผู้ใช้เลือกศูนย์ทรัพยากร Scheduler สามารถเพิ่ม Pod อื่นเข้า Node ได้ตลอดเวลา

PriorityFunction ใช้เมื่อ scheduler ตรวจสอบหลายระบบเพื่อหาค่าที่เหมาะสมที่สุดแล้ว หาก scheduler พบหลายตัวเลือกที่รองรับ Pod ได้ PriorityFunction สั่งให้ scheduler จัดอันดับแมชชีนตามความเหมาะสมที่ดีที่สุด ตัวอย่าง สาม Nodes ตรงตามความต้องการของ Pod ใหม่ แต้อันหนึ่งมีทรัพยากรว่างมากกว่าอื่นๆ จึงเป็น best fit

ในสภาพแวดล้อม Kubernetes นโยบายทั้งสองช่วยกระจาย workload คอนเทนเนอร์ข้ามหลายแมชชีน เพื่อให้แมชชีนหนึ่งไม่ได้รับกิจกรรมหนัก ในขณะที่อื่นๆ นั่งว่าง