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

Ngày 2: Pod & Container image

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

Làm chủ Pod và container image: image reference/tag/digest, pull policy, registry credential, lifecycle, logs và phân biệt ImagePullBackOff với CrashLoopBackOff.

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

Làm chủ Pod và container image: image reference/tag/digest, pull policy, registry credential, lifecycle, logs và phân biệt ImagePullBackOff với CrashLoopBackOff.

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

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

  • Ôn lại vòng đời Pod và container image
  • Thực hành build và push 1 image đơn giản lên registry
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 không chạy vì tag không tồn tại, registry private thiếu imagePullSecret hoặc container start rồi crash; người học thường đổi sang `latest` và restart mù. Bài này xây image decision tree và kiểm chứng image/runtime state bằng events, status và logs.

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ế
  • Image reference gồm registry/repository/tag hoặc digest; tag mutable còn digest pin immutable hơn và phù hợp reproducibility.
  • `imagePullPolicy` tương tác với tag và image cache; `Always` không sửa được image reference/credential sai, `IfNotPresent` có thể dùng image cache ngoài ý muốn.
  • ImagePullSecrets phải tồn tại đúng namespace và được Pod/ServiceAccount tham chiếu; secret không nên commit vào manifest/repository.
  • ImagePullBackOff/ErrImagePull xảy ra ở pull/auth/reference/network; CrashLoopBackOff xảy ra sau start và cần logs/exit code/command/args.

Image decision tree

Kiểm tra reference/registry/tag/digest trước. Nếu event nói pull/auth/manifest/network, xử lý image hoặc credential; nếu image đã pull và process exit, đọc logs/previous, exit code, command/args, env/config và probe. Running chưa đủ; cần Ready/response.

Reproducibility và secret

Tag mutable dễ drift; digest pin tốt hơn khi cần lặp lại. Pull policy không thay thế image đúng. imagePullSecret namespaced, phải bind đúng Pod/ServiceAccount và không commit token. Ghi runtime/architecture nếu build image local; không giả định image máy host tự có trong cluster.

Bài tập

Tạo workload image pinned, mô phỏng sai tag/private auth/crash/probe, thu evidence và sửa từng lỗi. So sánh tag/policy hoặc digest variant, verify imageID/Ready/rollout rồi cleanup secret/test artifact.

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 pod -n ckad-day2 -o wide
kubectl describe pod POD_NAME -n ckad-day2
kubectl get events -n ckad-day2 --sort-by=.lastTimestamp
kubectl get pod POD_NAME -n ckad-day2 -o jsonpath="{.status.containerStatuses[*].imageID} {.status.containerStatuses[*].state} {.status.containerStatuses[*].lastState}{"\n"}"
kubectl logs POD_NAME -n ckad-day2 --previous --all-containers --tail=100
kubectl get secret -n ckad-day2
kubectl rollout status deployment/APP_NAME -n ckad-day2
Hands-on lab

Thực hành theo scenario

  1. Tạo namespace `ckad-day2`; dựng Pod/Deployment dùng image public pinned tag hoặc digest, ghi image reference, pull policy, expected Ready state và owner label.
  2. Cố ý tạo sai tag, sai private registry credential, command exit và probe failure; với mỗi case thu `describe`, events, status.containerStatuses, logs và `--previous` khi có restart.
  3. Nếu có registry lab, tạo image nhỏ và push với tag + digest; nếu không, dùng image public và ghi limitation. So sánh behavior khi đổi tag/policy, không dùng `latest` làm bằng chứng reproducibility.
  4. Sửa đúng lớp: reference/secret/policy/command/probe; rollout hoặc recreate trong namespace lab rồi verify Pod Ready, restart count, imageID và application response.
  5. Cleanup Pod/Deployment/Secret/registry test artifact theo owner; redact token khỏi output và không dùng imagePullSecret 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:

  • Image reference/tag/digest/pull policy giải thích đúng.
  • Phân biệt pull failure với process/probe crash bằng evidence.
  • imagePullSecret đúng namespace và không lộ credential.
  • Sửa lỗi có rollout/Ready/imageID evidence và variant.
  • Cleanup mọi image/secret test artifact an toàn.
Transfer to exam / production

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

Nếu Pod ImagePullBackOff, đọc Events trước khi xem app logs; nếu image đã pull nhưng container restart, dùng `logs --previous`, exit code và command/args. Trong CKAD, kiểm tra namespace của Secret và imagePullPolicy rất nhanh.

Checkpoint · 3 phút

Kiểm tra nhanh

Câu hỏi: Pod báo ImagePullBackOff. Kiểm tra nào có giá trị đầu tiên?

Kết thúc bài

Checklist trước khi sang Ngày 2