Lộ trình
Cloud Native Computing FoundationAssociateTuần 2: Đào sâu dịch vụ cốt lõiBài 9 / 30

Ngày 9: Rolling Update & Rollback

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

Thực hành RollingUpdate và rollback an toàn: set image, rollout history/status, readiness/availability, pause/resume, revision pinning và recovery evidence.

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

Thực hành RollingUpdate và rollback an toàn: set image, rollout history/status, readiness/availability, pause/resume, revision pinning và recovery evidence.

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

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

  • Thực hành cập nhật image bằng kubectl set image
  • Luyện rollback về revision trước khi có lỗi
Instructor walkthrough

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

Scenario xuyên suốt

Đổi image bằng `set image` có thể tạo revision mới nhưng rollout treo hoặc Pod mới không Ready; rollback mù có thể đưa lại version lỗi hoặc xóa evidence. Bài này luyện update có baseline, gate, observe và rollback có kiểm chứng.

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ế
  • RollingUpdate tạo ReplicaSet revision mới và duy trì availability theo maxSurge/maxUnavailable; Recreate và RollingUpdate có trade-off downtime/capacity.
  • `kubectl set image` là mutation nhanh nhưng cần container name đúng và kiểm tra image digest/tag, rollout status/conditions/events sau đó.
  • Readiness/availability quyết định rollout healthy; Pod Running hoặc new ReplicaSet tồn tại không đủ để coi update thành công.
  • Revision history/`rollout history`/`rollout undo --to-revision` cần được ghi trước thay đổi; revision number không phải semantic version nếu không lưu annotation/metadata.

Rolling update là một change có gate

Ghi baseline: revision, imageID, replicas/Available, readiness, endpoints và strategy. set image tạo revision mới; theo dõi conditions, events, Pod readiness và application response. maxSurge/maxUnavailable ảnh hưởng capacity/disruption, không chỉ là syntax.

Rollback có bằng chứng

Nếu image pull/readiness/app regression, pause hoặc chặn tiếp rollout, giữ events/logs, xác định trigger rồi undo revision cụ thể. Sau rollback kiểm tra old imageID, Ready/Available, Service response và history; không xóa ReplicaSet để “dọn” trước khi hiểu owner.

Bài tập

Chạy v1→v2 healthy, rồi bad rollout, chẩn đoán và rollback. Ghi timeline/expected state, thử variant strategy/container name, đo availability và cleanup lab.

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 rollout history deployment/web -n ckad-day9
kubectl set image deployment/web web=nginx:1.27 -n ckad-day9
kubectl rollout status deployment/web -n ckad-day9 --timeout=90s
kubectl get rs,pods -n ckad-day9 -o wide
kubectl describe deployment web -n ckad-day9
kubectl rollout pause deployment/web -n ckad-day9
kubectl rollout undo deployment/web --to-revision=REVISION -n ckad-day9
kubectl rollout resume deployment/web -n ckad-day9
Hands-on lab

Thực hành theo scenario

  1. Tạo namespace `ckad-day9` và Deployment version v1 có readiness probe/response marker, replicas và update strategy rõ; ghi baseline imageID, Ready/Available, endpoints và rollout history.
  2. Dùng `kubectl set image` đổi v2, theo dõi `rollout status`, Deployment conditions, ReplicaSets, Pod imageID/restart/readiness/events; kiểm tra response không chỉ desired image.
  3. Mô phỏng bad image hoặc readiness failure để rollout treo; dùng pause/describe/events để giữ evidence, đặt timeout/abort criterion và không scale che lỗi.
  4. Rollback về revision baseline bằng `rollout undo` hoặc revision cụ thể, verify old imageID, Available replicas, Service response và history; tạo variant đổi maxUnavailable hoặc container name để debug.
  5. Cleanup Deployment/ReplicaSets/Service/namespace sau khi lưu timeline; không dùng `rollout undo` production khi chưa xác nhận target revision/approval.
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:

  • Baseline/revision/strategy/availability có evidence.
  • set image đúng container và theo dõi rollout conditions.
  • Phân biệt Running với Ready/Available.
  • Bad rollout được pause/diagnose/rollback và verify response.
  • Revision/cleanup/rollback safety rõ.
Transfer to exam / production

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

Sau `set image`, chạy rollout status nhưng đừng dừng ở đó: xem events, Pod Ready và imageID. Khi rollback, lấy history trước, chọn revision đúng và verify Service vẫn trả version mong muốn.

Checkpoint · 3 phút

Kiểm tra nhanh

Câu hỏi: Rollout tạo Pod image mới nhưng Deployment không Available đủ replicas. Hành động đúng nhất là gì?

Kết thúc bài

Checklist trước khi sang Ngày 2