คำขอและขีดจำกัดทรัพยากร
กำหนดคำขอและขีดจำกัด CPU กับหน่วยความจำสำหรับ Pod เพื่อให้จัดสรรทรัพยากรได้อย่างมีประสิทธิภาพและป้องกันทรัพยากรขาดแคลน
คำขอและขีดจำกัดทรัพยากร เป็นบทเรียน DevOps Bootcamp ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน DevOps Bootcamp และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
ความต้องการทรัพยากรใน Kubernetes
เช่นเดียวกับแอปพลิเคชันทั่วไป Pod ของคุณต้องใช้ทรัพยากรเพื่อทำงาน Kubernetes ช่วยจัดการทรัพยากรเหล่านี้อย่างมีประสิทธิภาพโดยใช้คำขอทรัพยากรและขีดจำกัดทรัพยากร
การตั้งค่าเหล่านี้บอก Kubernetes ว่า Pod ต้องใช้ CPU และหน่วยความจำเท่าใด รวมถึงอนุญาตให้ใช้ได้มากเพียงใด เพื่อให้มีการแบ่งสรรทรัพยากรอย่างเป็นธรรม
คำขอ CPU: รับประกัน CPU
คำขอ CPU บอก Kubernetes ถึงปริมาณ CPU ขั้นต่ำที่ Pod ต้องใช้เพื่อทำงานได้อย่างราบรื่น นี่คือการรับประกัน!
- Kubernetes ใช้คำขอเพื่อจัดตาราง Pod ไปยังโหนดที่มีทรัพยากรว่างเพียงพอ
- หากโหนดมี CPU ไม่เพียงพอตามคำขอ Pod จะไม่ถูกจัดตารางไปยังโหนดนั้น
- วิธีนี้ช่วยป้องกันไม่ให้แอปพลิเคชันสำคัญขาดแคลนทรัพยากร
หน่วย CPU และตัวอย่างคำขอ
CPU วัดเป็น 'คอร์' หรือ 'มิลลิคอร์' (m) โดย 1000m เท่ากับ CPU 1 คอร์ ดังนั้น 500m จึงเท่ากับครึ่งคอร์
ต่อไปนี้คือตัวอย่างการขอ CPU ขนาด 0.5 คอร์ในคำจำกัดความของ Pod:
apiVersion: v1
kind: Pod
metadata:
name: cpu-request-pod
spec:
containers:
- name: my-container
image: nginx
resources:
requests:
cpu: "500m"ขีดจำกัด CPU: ป้องกันการใช้งานเกิน
ขีดจำกัด CPU กำหนดปริมาณ CPU สูงสุดที่ Pod สามารถใช้ได้ ซึ่งเป็นเพดานการใช้งาน
- หาก Pod พยายามใช้ CPU เกินขีดจำกัด Kubernetes จะจำกัดอัตราการใช้งาน
- หมายความว่าการใช้ CPU ของ Pod จะถูกจำกัด เพื่อป้องกันไม่ให้ดึงทรัพยากรจาก Pod อื่นบนโหนดเดียวกันไปมากเกินไป
ขีดจำกัด CPU ในการทำงานจริง
นี่คือตัวอย่างการตั้งขีดจำกัด CPU หาก Pod นี้พยายามใช้ CPU มากกว่า 1 คอร์ ระบบจะจำกัดอัตราการใช้งาน ซึ่งหมายความว่าประสิทธิภาพจะถูกจำกัด
apiVersion: v1
kind: Pod
metadata:
name: cpu-limit-pod
spec:
containers:
- name: my-container
image: nginx
resources:
limits:
cpu: "1"คำขอหน่วยความจำ: รับประกัน RAM
เช่นเดียวกับ CPU คำขอหน่วยความจำจะระบุปริมาณ RAM ขั้นต่ำที่ Pod ต้องใช้ในการทำงาน
- Kubernetes ใช้ข้อมูลนี้เพื่อค้นหาโหนดที่มีหน่วยความจำว่างเพียงพอสำหรับ Pod ของคุณ
- หากโหนดมีหน่วยความจำไม่เหลือ Pod ที่ไม่มีคำขอมักเป็นกลุ่มแรกที่ถูกยุติ (ถูกขับออก) เพื่อเพิ่มพื้นที่ว่าง
หน่วยหน่วยความจำและตัวอย่างคำขอ
หน่วยความจำวัดเป็นไบต์ หน่วยที่ใช้กันทั่วไปคือ Mi (เมบิไบต์) และ Gi (กิบิไบต์)
100Mi คือ 100 เมบิไบต์ ต่อไปนี้เป็นวิธีขอหน่วยความจำขนาด 256 MiB:
apiVersion: v1
kind: Pod
metadata:
name: mem-request-pod
spec:
containers:
- name: my-container
image: nginx
resources:
requests:
memory: "256Mi"ขีดจำกัดหน่วยความจำ: หลีกเลี่ยง OOM
ขีดจำกัดหน่วยความจำกำหนดปริมาณหน่วยความจำสูงสุดที่พ็อดสามารถใช้ได้
- หากพ็อดใช้หน่วยความจำเกินขีดจำกัด ระบบปฏิบัติการจะยุติการทำงานทันทีพร้อมข้อผิดพลาด 'หน่วยความจำไม่เพียงพอ' (OOM) ซึ่งมักปรากฏเป็น 'ถูกยุติเพราะ OOM'
- วิธีนี้ช่วยป้องกันไม่ให้พ็อดที่ทำงานผิดปกติเพียงพ็อดเดียวใช้หน่วยความจำของโหนดจนหมดและทำให้โหนดทั้งโหนดหยุดทำงาน
ขีดจำกัดหน่วยความจำในการทำงาน
พ็อดนี้มีขีดจำกัดหน่วยความจำ 512 MiB หากพ็อดพยายามใช้มากกว่านี้ พ็อดจะถูกยุติการทำงาน (ถูกยุติเพราะ OOM) เพื่อปกป้องงานอื่น ๆ และโหนด
apiVersion: v1
kind: Pod
metadata:
name: mem-limit-pod
spec:
containers:
- name: my-container
image: nginx
resources:
limits:
memory: "512Mi"แนวทางปฏิบัติที่ดี: คำขอและขีดจำกัด
แนวทางปฏิบัติที่ดีคือการกำหนดทั้งคำขอและขีดจำกัดให้กับพ็อดทั้งหมด วิธีนี้ช่วยให้คลัสเตอร์มีเสถียรภาพและคาดการณ์ได้
- คำขอช่วยให้พ็อดได้รับทรัพยากรขั้นต่ำสำหรับการจัดตารางเวลา
- ขีดจำกัดป้องกันไม่ให้พ็อดอื่นและตัวโหนดเองขาดแคลนทรัพยากร
ต่อไปนี้คือตัวอย่างฉบับสมบูรณ์:
apiVersion: v1
kind: Pod
metadata:
name: full-resource-pod
spec:
containers:
- name: my-app
image: my-registry/my-app:1.0
resources:
requests:
cpu: "200m"
memory: "128Mi"
limits:
cpu: "500m"
memory: "256Mi"ตรวจสอบทรัพยากร
คุณมีพ็อดที่กำหนดคำขอ CPU เป็น 200m และขีดจำกัด CPU เป็น 1 (เท่ากับ 1000m)
จะเกิดอะไรขึ้นหากพ็อดนี้พยายามใช้ CPU 1.5 คอร์
สรุป: การจัดการทรัพยากร
ในบทเรียนนี้ เราได้เรียนรู้เกี่ยวกับคำขอทรัพยากรและขีดจำกัดทรัพยากรใน Kubernetes
- คำขอ (CPU และหน่วยความจำ) รับรองทรัพยากรขั้นต่ำสำหรับการจัดตารางเวลาพ็อด
- ขีดจำกัด (CPU และหน่วยความจำ) จำกัดการใช้งานสูงสุดเพื่อป้องกันการแย่งใช้ทรัพยากร
- การใช้ CPU เกินขีดจำกัดจะทำให้ถูกจำกัดอัตรา ส่วนการใช้หน่วยความจำเกินขีดจำกัดจะทำให้ถูกยุติการทำงาน (ถูกยุติเพราะ OOM)
- ควรกำหนดทั้งคำขอและขีดจำกัดเสมอ เพื่อให้ประสิทธิภาพของแอปพลิเคชันมีเสถียรภาพและคาดการณ์ได้
คำถามที่พบบ่อย
บทเรียน “คำขอและขีดจำกัดทรัพยากร” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “คำขอและขีดจำกัดทรัพยากร” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส DevOps Bootcamp ให้อัปเกรดเป็น CoddyKit PRO คอร์ส DevOps Bootcamp มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “คำขอและขีดจำกัดทรัพยากร”
กำหนดคำขอและขีดจำกัด CPU กับหน่วยความจำสำหรับ Pod เพื่อให้จัดสรรทรัพยากรได้อย่างมีประสิทธิภาพและป้องกันทรัพยากรขาดแคลน คุณปฏิบัติ DevOps Bootcamp ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน DevOps Bootcamp หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน DevOps Bootcamp บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “คำขอและขีดจำกัดทรัพยากร” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน DevOps Bootcamp นี้ได้ไหม
ได้ บทเรียน DevOps Bootcamp ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- คำขอและขีดจำกัดทรัพยากร
- ตัวเลือกโหนดและความสอดคล้อง
- มลทินและการยอมรับมลทิน
- ลำดับความสำคัญและการแย่งทรัพยากรของ Pod