Lộ trình
Cloud Native Computing FoundationAssociateTuần 1: Nền tảngBài 4 / 30

Ngày 4: Pod cơ bản

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

Tạo và debug Pod bằng imperative command và YAML; đọc lifecycle, logs, exec, events, probes/resources và cleanup đúng namespace.

đọ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

Tạo và debug Pod bằng imperative command và YAML; đọc lifecycle, logs, exec, events, probes/resources và cleanup đúng namespace.

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

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

  • Tạo Pod bằng imperative command và YAML
  • Thực hành xem log và exec vào container
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 được tạo nhưng ở CrashLoopBackOff, người học chỉ chạy exec vào container hoặc xóa Pod lặp lại mà không đọc logs/events; một Pod khác Running nhưng chưa Ready vì probe sai. Bài học dạy cách đi từ desired spec đến actual container state.

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ế
  • Pod là scheduling unit; container trong Pod chia network namespace/volumes nhưng có lifecycle và command riêng.
  • Pending/ContainerCreating/Running/Ready/CrashLoopBackOff/ImagePullBackOff là signals khác nhau, cần evidence khác nhau.
  • Imperative command nhanh để tạo skeleton; YAML/apply tạo repeatable spec gồm image, command, env, resources, probes, securityContext.
  • logs, logs --previous, describe/events và exec trả lời các câu hỏi debug khác nhau; exec chỉ dùng khi container đang chạy và access được.

Pod lifecycle và evidence

Pod spec được API nhận, scheduler bind vào node, kubelet tạo sandbox/container rồi cập nhật conditions. Running chỉ nói container process đang chạy; Ready mới liên quan traffic/consumer. Khi lỗi, dùng get → describe/events → logs/previous → exec theo câu hỏi, không xóa lặp lại để che symptom.

Imperative và YAML

Dùng --dry-run=client -o yaml để tạo skeleton nhanh, sau đó thêm labels, resources, probes và security context. Pod đơn lẻ không có controller tự tạo lại; nếu cần desired replicas/rollout, bài Deployment sẽ xử lý sau.

Bài tập

Tạo healthy Pod và một Pod lỗi command/probe, thu evidence, sửa và verify. Ghi expected state cho phase/conditions/events, rồi cleanup namespace. Pass khi chẩn đoán được lỗi mà không cần đoán hoặc dùng destructive reset.

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 run web --image=nginx:stable --namespace=cka-day4 --labels=app=web --dry-run=client -o yaml
kubectl get pod web -n cka-day4 -o wide
kubectl describe pod web -n cka-day4
kubectl logs web -n cka-day4 --all-containers --tail=100
kubectl logs web -n cka-day4 --previous --tail=100
kubectl exec -n cka-day4 web -- sh -c "id && cat /etc/os-release | head"
Hands-on lab

Thực hành theo scenario

  1. Tạo namespace `cka-day4`, generate Pod YAML bằng `kubectl run ... --dry-run=client -o yaml`, bổ sung label, requests/limits, readiness/liveness và securityContext phù hợp.
  2. Apply một Pod healthy và một Pod cố ý sai command/probe; kiểm tra get/describe/events/logs/previous rồi sửa YAML và apply lại.
  3. Dùng `kubectl exec` để đọc file/env không chứa secret; kiểm tra Pod IP, status/conditions và expected state.
  4. Xóa Pod/namespace lab theo target cụ thể, xác nhận không còn resource và không dùng image/credential production.
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:

  • Pod manifest có explicit image/command/labels/resources.
  • Healthy và failing Pod có lifecycle evidence.
  • Logs/previous/events/exec dùng đúng mục đích.
  • Probe failure được phân biệt với process crash/image pull.
  • Cleanup namespace/Pod có proof.
Transfer to exam / production

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

CKA thường yêu cầu tạo Pod nhanh rồi debug. Tạo YAML bằng dry-run, sửa đúng field, dùng `logs --previous` cho container đã restart và kiểm tra events trước khi xóa.

Checkpoint · 3 phút

Kiểm tra nhanh

Câu hỏi: Pod restart liên tục và container đã thoát trước khi bạn kiểm tra. Evidence nào nên ưu tiên?

Kết thúc bài

Checklist trước khi sang Ngày 2