Lộ trình
Cloud Native Computing FoundationAssociateTuần 3: Kiến trúc & bảo mậtBài 20 / 30

Ngày 20: StorageClass & Dynamic Provisioning

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

Thiết kế StorageClass và dynamic provisioning: provisioner, parameters, binding mode, reclaim policy, topology, static/dynamic trade-off và cleanup.

đọ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ế StorageClass và dynamic provisioning: provisioner, parameters, binding mode, reclaim policy, topology, static/dynamic trade-off và cleanup.

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

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

  • Thực hành tạo StorageClass và PVC dùng dynamic provisioning
  • So sánh static và dynamic provisioning
Instructor walkthrough

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

Scenario xuyên suốt

PVC không chỉ định StorageClass nên dùng default class sai; dynamic provisioner tạo volume ở zone không phù hợp hoặc reclaim Delete làm mất data khi claim xóa. Bài học biến provisioning thành lifecycle decision.

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ế
  • Static provisioning dùng PV tạo sẵn; dynamic provisioning dùng StorageClass/provisioner tạo PV khi PVC request.
  • StorageClass parameters quyết định backend/type/performance; provisioner và driver phải tồn tại/hoạt động.
  • Immediate vs WaitForFirstConsumer ảnh hưởng topology/zone binding; volume attachment cần node/workload context.
  • Reclaim policy Delete/Retain, allowVolumeExpansion, mount options và binding mode tạo data/operation trade-off.

Static và dynamic provisioning

Static: operator tạo PV trước, PVC bind theo criteria. Dynamic: PVC tham chiếu StorageClass, provisioner/CSI driver tạo PV theo parameters. volumeBindingMode=WaitForFirstConsumer có thể trì hoãn binding để xét topology; Immediate có thể chọn location sớm.

Lifecycle và debug

Đọc StorageClass/provisioner/PVC events/PV annotations/driver logs. Reclaim Delete không đồng nghĩa “safe cleanup”; biết backend và data policy trước xóa. Default class và parameter đổi có blast radius lớn.

Bài tập

So sánh static/dynamic matrix, tạo dynamic PVC lab có consumer, cố ý sai class/provisioner rồi debug. Verify Bound/mount/topology và cleanup backend theo reclaim policy.

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 storageclass -o yaml
kubectl describe storageclass CLASS_NAME
kubectl get pvc,pv -n cka-day20 -o wide
kubectl describe pvc PVC_NAME -n cka-day20
kubectl get events -n cka-day20 --sort-by=.lastTimestamp
Hands-on lab

Thực hành theo scenario

  1. Inspect StorageClasses: provisioner, parameters, reclaimPolicy, volumeBindingMode, allowVolumeExpansion; ghi default class và risk.
  2. Tạo StorageClass lab phù hợp backend, PVC có explicit `storageClassName`, tạo Pod consumer rồi theo dõi Pending→Bound/Provisioned.
  3. Cố ý sai provisioner/parameter/zone, đọc PVC events/provisioner logs/PV, sửa manifest và verify mount.
  4. Xóa test Pod/PVC theo policy, kiểm tra PV/backend reclaim state và xóa StorageClass only if lab-owned; không đổi default production class.
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:

  • Static/dynamic workflow phân biệt đúng.
  • Provisioner/parameters/binding mode có evidence.
  • Topology/consumer/PV lifecycle được kiểm tra.
  • Reclaim/expansion/data policy rõ.
  • Cleanup backend/PV/PVC/StorageClass scoped.
Transfer to exam / production

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

CKA dynamic storage task thường fail do provisioner/class/binding mode. `StorageClass` tồn tại chưa đủ; kiểm tra driver, PVC events, PV creation và consumer scheduling.

Checkpoint · 3 phút

Kiểm tra nhanh

Câu hỏi: PVC dynamic provisioning Pending và không có PV mới. Kiểm tra ưu tiên nào?

Kết thúc bài

Checklist trước khi sang Ngày 2