โควตาทรัพยากรและช่วงจำกัดทรัพยากร
ป้องกันปัญหาผู้ใช้งานร่วมที่รบกวนกันและเวิร์กโหลดที่ใช้ทรัพยากรเกินควบคุม ด้วยการบังคับใช้ ResourceQuotas ระดับเนมสเปซและ LimitRanges ต่อพ็อด
โควตาทรัพยากรและช่วงจำกัดทรัพยากร เป็นบทเรียน Kubernetes Basics ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kubernetes Basics และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kubernetes Basics มีบทเรียนทั้งหมด 4 บทเรียน
แนวป้องกันสำหรับคลัสเตอร์ที่ใช้ร่วมกัน
ในคลัสเตอร์ที่ใช้ร่วมกัน ทีมหนึ่งอาจใช้ทรัพยากรทั้งหมดโดยไม่ได้ตั้งใจ ResourceQuotas และ LimitRanges คือแนวป้องกันที่ช่วยให้เนมสเปซต่าง ๆ ใช้งานได้อย่างเป็นธรรมและป้องกันระบบหยุดทำงาน
ResourceQuota คืออะไร
ResourceQuota จำกัดทรัพยากรรวมที่เนมสเปซหนึ่งสามารถใช้ได้ ได้แก่ CPU หน่วยความจำ และจำนวนออบเจ็กต์ เช่น พ็อดหรือบริการ
โควตาทรัพยากรประมวลผล
โควตานี้จำกัดคำขอและขีดจำกัดรวมของพ็อดทั้งหมดในเนมสเปซ
apiVersion: v1
kind: ResourceQuota
metadata:
name: team-compute
namespace: team-a
spec:
hard:
requests.cpu: '4'
requests.memory: 8Gi
limits.cpu: '8'
limits.memory: 16Giโควตาจำนวนอ็อบเจ็กต์
โควตายังสามารถจำกัดจำนวนของอ็อบเจ็กต์แต่ละประเภทที่มีอยู่ เพื่อป้องกันการเพิ่มจำนวนโดยไม่ตั้งใจได้อีกด้วย
spec:
hard:
pods: '20'
services: '5'
persistentvolumeclaims: '10'กฎการบังคับใช้โควตา
เมื่อกำหนด ResourceQuota สำหรับการประมวลผลแล้ว พ็อดทุกตัวต้องประกาศคำขอและขีดจำกัด มิฉะนั้นจะถูกปฏิเสธ โควตาไม่สามารถคำนวณพ็อดที่ไม่จำกัดขนาดได้
ตรวจสอบการใช้โควตา
ตรวจสอบว่าโควตาถูกใช้ไปมากเพียงใดในเวลาใดก็ได้
kubectl describe resourcequota team-compute -n team-a
# Resource Used Hard
# requests.cpu 2 4
# requests.memory 3Gi 8GiLimitRange คืออะไร
LimitRange กำหนดค่าเริ่มต้นและขอบเขตต่ออ็อบเจ็กต์ภายในเนมสเปซ เพื่อจำกัดพ็อดแต่ละตัว แม้นักพัฒนาจะลืมกำหนดค่าก็ตาม
ค่าเริ่มต้นและขอบเขต
LimitRange สามารถเติมคำขอและขีดจำกัดเริ่มต้น รวมทั้งบังคับใช้ค่าต่ำสุดและสูงสุดสำหรับแต่ละคอนเทนเนอร์ได้
apiVersion: v1
kind: LimitRange
metadata:
name: container-limits
namespace: team-a
spec:
limits:
- type: Container
default:
cpu: 500m
memory: 256Mi
defaultRequest:
cpu: 250m
memory: 128Mi
max:
cpu: '2'
memory: 1Giการทำงานร่วมกัน
LimitRange จะเติมค่าเริ่มต้นให้แต่ละคอนเทนเนอร์ จากนั้น ResourceQuota จะรวมค่าทั้งหมดเพื่อตรวจสอบกับขีดจำกัดของเนมสเปซ ทั้งสองอย่างร่วมกันช่วยให้พ็อดมีขนาดเหมาะสมและเนมสเปซมีการใช้ทรัพยากรรวมอย่างเป็นธรรม
แก้ไขปัญหาการถูกปฏิเสธ
หากพ็อดถูกปฏิเสธ ข้อผิดพลาดจะระบุนโยบายที่เป็นสาเหตุ โปรดอ่านอย่างละเอียด เพราะจะแจ้งว่าคุณใช้เกินโควตาหรือฝ่าฝืนขอบเขตของ LimitRange
# exceeded quota: team-compute, requested: requests.cpu=2, used: 3, limited: 4
# maximum cpu usage per Container is 2, but limit is 4เคล็ดลับสำหรับการใช้งานจริง
- กำหนด LimitRange เพื่อไม่ให้คำขอที่ถูกลืมทำให้โควตาทำงานผิดพลาด
- กำหนดขนาดโควตาจากการใช้งานจริง โดยเผื่อพื้นที่สำหรับการเพิ่มขึ้นอย่างฉับพลัน
- ตรวจสอบการใช้งานเป็นประจำและปรับเปลี่ยนเมื่อทีมเติบโต
ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับเกณฑ์ควบคุมเนมสเปซ
ทบทวน
คุณได้เรียนรู้การบังคับใช้ความเป็นธรรมด้วย ResourceQuotas (ขีดจำกัดการประมวลผลและจำนวนอ็อบเจ็กต์ในระดับเนมสเปซ) และ LimitRanges (ค่าเริ่มต้นและขอบเขตต่อคอนเทนเนอร์) เมื่อนำมาใช้ร่วมกัน ทั้งสองอย่างจะป้องกันปัญหาผู้ใช้รายหนึ่งใช้ทรัพยากรมากเกินไปจนกระทบผู้อื่น และช่วยให้คลัสเตอร์ที่ใช้ร่วมกันมีเสถียรภาพ ซึ่งเป็นแนวปฏิบัติสำคัญสำหรับระบบใช้งานจริง
คำถามที่พบบ่อย
บทเรียน “โควตาทรัพยากรและช่วงจำกัดทรัพยากร” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “โควตาทรัพยากรและช่วงจำกัดทรัพยากร” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kubernetes Basics ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kubernetes Basics มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “โควตาทรัพยากรและช่วงจำกัดทรัพยากร”
ป้องกันปัญหาผู้ใช้งานร่วมที่รบกวนกันและเวิร์กโหลดที่ใช้ทรัพยากรเกินควบคุม ด้วยการบังคับใช้ ResourceQuotas ระดับเนมสเปซและ LimitRanges ต่อพ็อด คุณปฏิบัติ Kubernetes Basics ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kubernetes Basics หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kubernetes Basics บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “โควตาทรัพยากรและช่วงจำกัดทรัพยากร” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Kubernetes Basics นี้ได้ไหม
ได้ บทเรียน Kubernetes Basics ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การวินิจฉัยปัญหาทั่วไป
- การแก้ไขข้อบกพร่องของ Pod และ Service
- แนวทางปฏิบัติและเคล็ดลับที่ดีที่สุดสำหรับการใช้งานจริง
- โควตาทรัพยากรและช่วงจำกัดทรัพยากร