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

Ngày 21: Ôn tập tuần 3

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

Ôn tập tuần 3 bằng 10 timed drills nối Networking và Storage: từ request path đến object state, evidence, remediation 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

Ôn tập tuần 3 bằng 10 timed drills nối Networking và Storage: từ request path đến object state, evidence, remediation và cleanup.

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

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

  • Luyện lại toàn bộ Networking & Storage
  • Làm 10 câu trắc nghiệm tự kiểm tra
Instructor walkthrough

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

Scenario xuyên suốt

Người học nhớ từng lệnh Service, NetworkPolicy, PVC nhưng bị kẹt khi một request timeout đồng thời với PVC Pending hoặc Pod không schedule được. Bài ôn tập buộc xây hypothesis theo dependency, thu evidence theo lớp và sửa đúng object thay vì thử lệnh ngẫu nhiên.

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ế
  • Request path cần được truy từ client → Service → EndpointSlice → Pod → container port; một Service tồn tại không chứng minh có endpoint hoạt động.
  • NetworkPolicy là allow-list theo policy semantics và phụ thuộc CNI enforcement; phải kiểm tra cả selector, namespace/pod labels và egress/ingress direction.
  • Storage path gồm PVC → StorageClass/provisioner → PV/backend → Pod volumeMount; Bound chưa chứng minh mount, read/write hoặc topology đúng.
  • Pod Pending, Service timeout và PVC Pending có thể là các lớp độc lập hoặc cùng bị ảnh hưởng bởi scheduling/node topology; events và conditions giúp tách dependency.

Framework ôn tập: request path và data path

Đừng bắt đầu bằng lệnh quen tay. Với Networking, vẽ client → Service → EndpointSlice → Pod → containerPort; với Storage, vẽ PVC → StorageClass/provisioner → PV → backend → volumeMount → application. Mỗi bước phải có object state và evidence tương ứng.

Timed review

Làm 10 drill trong một worksheet: scope/impact, hypothesis, expected state, command/evidence, minimal fix, result, variant và rollback. Các lỗi cần phân biệt gồm selector/port/endpoint, policy direction/label, class/provisioner/capacity/access mode, topology/consumer và filesystem permission. Bound, Running hoặc Service tồn tại chỉ là intermediate state; hãy kiểm tra đường request hoặc read/write thật.

Quality gate

Pass khi hoàn thành 8/10 drill không cần hint, 10/10 có evidence và cleanup, giải thích được vì sao remediation tác động đúng lớp, đồng thời không phá shared/default resource. Nếu một drill fail, ghi failure mode và lặp lại sau khi tạo variant; không đánh dấu đạt chỉ vì manifest apply thành công.

Bài tập

Tạo namespace lab, thực hiện 10 scenario, lưu worksheet và output tối thiểu. Cuối buổi review chéo: người khác đọc worksheet và tái hiện một drill chỉ từ expected state/evidence. Dọn lab theo reclaim/data policy và ghi proof.

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 config current-context && kubectl config view --minify --output="jsonpath={..namespace}{"\n"}"
kubectl get svc,endpointslice,pods -n cka-day21 -o wide
kubectl describe svc SERVICE_NAME -n cka-day21 && kubectl describe pod POD_NAME -n cka-day21
kubectl get networkpolicy -n cka-day21 -o yaml
kubectl get pvc,pv,storageclass -n cka-day21 -o wide
kubectl get events -n cka-day21 --sort-by=.lastTimestamp
kubectl logs POD_NAME -n cka-day21 --all-containers --tail=100
Hands-on lab

Thực hành theo scenario

  1. Chuẩn bị một namespace lab riêng, marker label/owner và context; ghi cluster/runtime assumption. Không dùng default namespace, production context, wildcard delete hoặc đổi default StorageClass/NetworkPolicy dùng chung.
  2. Chạy 10 drill trong thời gian giới hạn: (1) Service không có EndpointSlice, (2) targetPort sai, (3) DNS/Service path lỗi, (4) NetworkPolicy deny ingress, (5) NetworkPolicy deny egress, (6) PVC sai class, (7) PVC thiếu capacity/access mode, (8) dynamic provisioner/driver không tạo PV, (9) WaitForFirstConsumer bị kẹt do scheduling/topology, (10) Pod mount được nhưng app không đọc/ghi do permission.
  3. Mỗi drill ghi hypothesis, expected state và command đầu tiên có giá trị; tối thiểu dùng `get`, `describe`, `events`, `logs` hoặc `jsonpath` phù hợp, rồi đối chiếu Service/EndpointSlice/Pod/Policy/PVC/PV/StorageClass.
  4. Áp dụng remediation nhỏ nhất trong lab, kiểm tra lại request path hoặc data path, sau đó tạo một variant (đổi label/port/class/permission) để chứng minh hiểu nguyên nhân chứ không chỉ làm pass một manifest.
  5. Kết thúc bằng kiểm tra endpoints, policy, PVC/PV phase, mount/read/write, events và namespace marker; cleanup chỉ tài nguyên lab, ghi rõ Retain/Delete backend outcome và restore mọi label/taint/policy tạm thời.
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:

  • Hoàn thành đủ 10 drill và phân loại đúng lớp Networking hay Storage.
  • Mỗi drill có context, scope, hypothesis, expected state và evidence trước/sau remediation.
  • Giải thích được ít nhất một dependency giữa scheduling, EndpointSlice, NetworkPolicy, PVC, PV và StorageClass.
  • Không dùng destructive wildcard, force mù, xóa shared/default object hoặc bỏ qua data policy.
  • Pass khi 8/10 drill đúng ngay lần đầu, 10/10 có remediation/cleanup rõ, và một người khác có thể tái hiện bằng worksheet.
Transfer to exam / production

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

Trong CKA, hãy đi theo đường dữ liệu thay vì chạy nhiều lệnh: xác nhận context → đọc object liên quan → đọc events/conditions → sửa nhỏ nhất → kiểm tra state và rollback. Nếu PVC/Service có vẻ “đúng”, vẫn phải chứng minh consumer mount hoặc EndpointSlice có endpoint Ready.

Checkpoint · 3 phút

Kiểm tra nhanh

Câu hỏi: Một Service có selector đúng nhưng request vẫn timeout, đồng thời PVC của Pod đang Pending. Cách triage tốt nhất là gì?

Kết thúc bài

Checklist trước khi sang Ngày 2