ฉันกำลังทดสอบแอปพลิเคชันของฉันบนคลัสเตอร์ Kubernetes แบบ Bare-Metal (เวอร์ชัน 1.22.1) และมีปัญหาเมื่อเปิดใช้แอปพลิเคชันของฉันในฐานะงาน
คลัสเตอร์ของฉันมีสองโหนด (มาสเตอร์และผู้ปฏิบัติงาน) แต่ผู้ปฏิบัติงานถูกปิดล้อม บนโหนดหลัก มีหน่วยความจำ 21GB สำหรับแอปพลิเคชัน
ฉันพยายามเปิดใบสมัครเป็นสามงานพร้อมกัน เนื่องจากฉันตั้งค่าหน่วยความจำ 16GB เป็นทั้งคำขอทรัพยากรและขีดจำกัด จึงมีเพียงงานเดียวเท่านั้นที่เริ่มทำงานและอีกสองงานที่เหลืออยู่ในสถานะรอดำเนินการ ฉันได้ตั้งค่า backoffLimit: 0 ไว้ที่งาน
สถานะพร้อมชื่อเริ่มอายุใหม่
app1--1-8pp6l 0/1 รอดำเนินการ 0 42 วินาที
app2--1-42ssl 0/1 รอดำเนินการ 0 45s
app3--1-gxgwr 0/1 ทำงาน 0 46 วินาที
หลังจากพ็อดแรกเสร็จสิ้น ควรเริ่มพ็อดหนึ่งในสองพ็อดที่อยู่ในสถานะรอดำเนินการเท่านั้น อย่างไรก็ตาม มีการเริ่มต้นหนึ่งรายการ และอีกรายการหนึ่งอยู่ในสถานะ OutOfMemory แม้ว่าจะไม่มีการเริ่มต้นคอนเทนเนอร์ใน Pod ก็ตาม
สถานะพร้อมชื่อเริ่มอายุใหม่
app1--1-8pp6l 0/1 วิ่ง 0 90 วินาที
app2--1-42ssl 0/1 หน่วยความจำภายนอก 0 93 วินาที
app3--1-gxgwr 0/1 เสร็จสิ้น 0 94 วินาที
เหตุการณ์ของ OutOfMemory Pod มีดังนี้:
เหตุการณ์:
พิมพ์อายุเหตุผลจากข้อความ
---- ------ ---- ---- -------
คำเตือน FailedScheduling 3m41s (x2 over 5m2s) default-scheduler มี 0/2 โหนด: 1 หน่วยความจำไม่เพียงพอ 1 โหนดไม่สามารถจัดตารางเวลาได้
ตัวกำหนดตารางเวลาเริ่มต้น 3m38s ตามกำหนดการปกติ กำหนดการทดสอบ/app2--1-42ssl ให้กับมาสเตอร์เรียบร้อยแล้ว
คำเตือน OutOfmemory 3m38s kubelet Node มีทรัพยากรไม่เพียงพอ: หน่วยความจำ, ที่ร้องขอ: 16000000000, ใช้: 31946743808, ความจุ: 37634150400
ดูเหมือนว่า Pod ถูกกำหนดให้กับโหนดแม้ว่าจะมีพื้นที่ไม่เพียงพอเนื่องจาก Pod อื่นเพิ่งเริ่มทำงาน
ฉันเดาว่านี่ไม่ใช่พฤติกรรมที่คาดหวังของ Kubernetes มีใครรู้สาเหตุของปัญหานี้ไหม