Lộ trình
Cloud Native Computing FoundationAssociateTuần 4: Tối ưu & vận hànhBài 22 / 30

Ngày 22: ResourceQuota & LimitRange

Thời lượng: 45 phút
Mục tiêu: 2 nhiệm vụ chính
Tiến độ lộ trình
ckadngày 22
hoàn thành22 / 30 bài
Bối cảnh bài học

Thiết kế ResourceQuota và LimitRange theo namespace: quota admission, default request/limit, max/min constraints, QoS/capacity và debug rejection.

đọc hiểuthực hànhcheckpoint
Bài giảng hôm nay

Học hiểu, rồi mới thực hành

Thiết kế ResourceQuota và LimitRange theo namespace: quota admission, default request/limit, max/min constraints, QoS/capacity và debug rejection.

Bắt đầu đọc bài giảng

Nhiệm vụ bài học hôm nay

  • Thực hành thiết lập ResourceQuota cho namespace
  • Thực hành LimitRange để áp default request/limit
Instructor walkthrough

Bài giảng chi tiết: từ bài toán đến bằng chứng

Scenario xuyên suốt

Pod bị từ chối dù YAML hợp lệ vì namespace hết quota hoặc thiếu requests/limits; ngược lại default quá thấp làm app OOM/CPU throttle. Bài học nối policy namespace với workload resource contract và evidence admission/runtime.

01Đọc bài toán

Xác định actor, workload, constraint và trạng thái cuối cần đạt.

02Vẽ luồng / boundary

Chỉ ra request, dependency, identity và failure domain trước khi chọn công cụ.

03Chọn và thực hành

Thay đổi nhỏ nhất trong lab cô lập; command nào cũng phải nói rõ nó kiểm tra điều gì.

04Kiểm chứng / recovery

Đối chiếu trạng thái thực tế, tạo một failure variant và ghi cách hoàn tác.

Cách nối lý thuyết với thực tế
  • ResourceQuota giới hạn tổng resource/object trong namespace; admission tính request/limit và object count, không chỉ kiểm tra một Pod đang chạy.
  • LimitRange đặt min/max và default request/limit cho container/Pod; default có thể thay đổi QoS/capacity nếu manifest bỏ trống.
  • Requests ảnh hưởng scheduling/quota; limits giới hạn runtime và CPU throttling/OOM behavior; policy phải phản ánh workload SLO.
  • Quota/LimitRange có scope/namespace và update semantics; apply order/owner/exception cần rõ, không tăng quota để che leak workload.

Namespace resource policy

ResourceQuota đặt tổng budget/object count; LimitRange đặt min/max và default per container/Pod. Defaulted request/limit ảnh hưởng QoS, scheduling và quota. Apply Pod có thể fail ở admission trước khi scheduler; Pod có thể Pending sau admission vì node capacity.

Debug và thiết kế

Đọc error/events, describe quota/limitrange, inspect resources sau defaulting và so sánh used/hard. Đặt policy theo SLO/capacity, tránh default quá nhỏ/quá lớn; exception phải có owner/expiry. Cleanup phải chứng minh quota được giải phóng.

Bài tập

Tạo quota/limitrange, test thiếu/quá resources và object count, quan sát default/QoS/usage, sửa workload và tạo variant namespace/capacity. Phân biệt admission reject với scheduler Pending rồi cleanup.

Terminal reference

Command list và cách dùng

Chạy từng lệnh theo đúng thứ tự. Trước các lệnh có thể tạo hoặc thay đổi tài nguyên, hãy kiểm tra profile, account và region.

Commands · read-only checkpoints
kubectl get resourcequota,limitrange -n ckad-day22 -o yaml
kubectl describe resourcequota -n ckad-day22
kubectl describe limitrange -n ckad-day22
kubectl get pod POD_NAME -n ckad-day22 -o jsonpath="{.spec.containers[*].resources} {.status.qosClass}{"\n"}"
kubectl get events -n ckad-day22 --sort-by=.lastTimestamp
kubectl get pods -n ckad-day22 -o wide
Hands-on lab

Thực hành theo scenario

  1. Tạo namespace `ckad-day22`; áp ResourceQuota cho requests/limits/pods/Services và LimitRange min/max/default; ghi budget, expected admission và owner.
  2. Apply Pod thiếu resources, quá min/max hoặc vượt quota; đọc API rejection/events, `describe quota`, `describe limitrange` và inspect resulting/defaulted Pod spec.
  3. Tạo workload nhiều replicas/resource requests, quan sát quota used/hard, scheduling, QoS class, CPU/memory behavior; không stress cluster dùng chung.
  4. Sửa manifest theo budget, scale trong quota, tạo variant đổi namespace/default/Pod count và test rollback policy. Phân biệt quota rejection với Pending do node capacity.
  5. Cleanup workload/Quota/LimitRange/namespace; restore shared policy nếu lab không cô lập, ghi quota usage zero và không đặt limit vô hạn.
Evidence checkpoint

Kiểm chứng kết quả

Không coi lệnh chạy thành công là đủ. Hãy đối chiếu output với trạng thái mong đợi:

  • Quota vs LimitRange purpose/scope đúng.
  • Default/min/max/defaulted resources có evidence.
  • Admission rejection và quota usage được debug.
  • QoS/scheduling/runtime capacity trade-off rõ.
  • Cleanup giải phóng quota, không ảnh hưởng namespace khác.
Transfer to exam / production

Bẫy thường gặp và trade-off

CKAD quota task: nếu Pod bị rejected, xem events/message và LimitRange trước; kiểm tra defaulted resources rồi quota used/hard. Đừng nhầm admission quota với scheduler Pending.

Checkpoint · 3 phút

Kiểm tra nhanh

Câu hỏi: Pod bị API server từ chối vì thiếu requests/limits trong namespace có LimitRange. Kiểm tra nào phù hợp?

Kết thúc bài

Checklist trước khi sang Ngày 2