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

Ngày 10: Deployment Strategy

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

Chọn Deployment strategy theo availability và lifecycle: so sánh RollingUpdate/Recreate, cấu hình maxSurge/maxUnavailable, capacity, readiness và downtime 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

Chọn Deployment strategy theo availability và lifecycle: so sánh RollingUpdate/Recreate, cấu hình maxSurge/maxUnavailable, capacity, readiness và downtime evidence.

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

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

  • Học RollingUpdate vs Recreate strategy
  • Thực hành cấu hình maxSurge, maxUnavailable
Instructor walkthrough

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

Scenario xuyên suốt

RollingUpdate không phải lúc nào cũng an toàn: app không chạy song song, schema không tương thích hoặc cluster thiếu capacity. Recreate tránh overlap nhưng gây downtime. Bài học biến strategy thành quyết định dựa trên contract và đo được.

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 overlap giữa old/new ReplicaSet theo maxSurge và maxUnavailable; cần readiness để kiểm soát traffic và capacity để schedule.
  • Recreate scale old ReplicaSet về zero trước khi tạo new, phù hợp workload không thể coexist nhưng có downtime rõ.
  • maxSurge là số Pod vượt desired cho rollout; maxUnavailable là số Pod unavailable cho phép, cùng readiness/PDB/capacity tạo availability envelope.
  • Strategy không giải quyết database/schema compatibility, session, storage hoặc traffic routing; cần app contract/migration plan ngoài Deployment.

Strategy là availability contract

RollingUpdate giữ overlap theo maxSurge/maxUnavailable, nhưng cần capacity, readiness và app compatibility. Recreate dừng version cũ trước khi tạo version mới, đơn giản hơn cho workload không coexist nhưng có downtime.

Đừng nhầm strategy với app safety

Không strategy nào tự giải quyết schema migration, session, storage hoặc dependency. Ghi baseline/desired/Available/peak Pod/downtime/response, đặt abort criteria và verify rollout. Nếu readiness/image fail, sửa root cause hoặc rollback; không tăng maxUnavailable để che lỗi.

Bài tập

Chạy cùng workload với RollingUpdate và Recreate, thử maxSurge/maxUnavailable, đo availability/capacity/downtime, mô phỏng failure và lập decision matrix cho workload stateful/schema-sensitive/stateless.

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 deployment web -n ckad-day10 -o jsonpath="{.spec.strategy}{"\n"}"
kubectl patch deployment web -n ckad-day10 --type=merge -p '{"spec":{"strategy":{"type":"RollingUpdate","rollingUpdate":{"maxSurge":"25%","maxUnavailable":0}}}}'
kubectl rollout status deployment/web -n ckad-day10 --timeout=120s
kubectl get rs,pods -n ckad-day10 -o wide
kubectl get deployment web -n ckad-day10 -o jsonpath="{.status.replicas} {.status.availableReplicas} {.status.unavailableReplicas}{"\n"}"
kubectl describe deployment web -n ckad-day10
Hands-on lab

Thực hành theo scenario

  1. Tạo namespace `ckad-day10`, Deployment replicas=4 có readiness marker và resource requests; ghi baseline capacity, Available, Service response và strategy.
  2. Chạy RollingUpdate với các cặp maxSurge/maxUnavailable khác nhau, quan sát old/new ReplicaSet, Pod counts, Available, events và response trong rollout; ghi peak capacity/downtime.
  3. Chạy Recreate trên workload lab, đo gap giữa old termination và new Ready; xác định khi nào downtime chấp nhận được và khi nào RollingUpdate không phù hợp.
  4. Mô phỏng thiếu capacity/readiness failure hoặc non-compatible app contract; phân biệt strategy bottleneck với application failure, rồi rollback strategy/image có expected state.
  5. Cleanup Deployment/Service/ReplicaSets/namespace, lưu decision matrix; không test Recreate trên production hoặc dùng strategy để bypass PDB/availability requirement.
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:

  • Giải thích đúng lifecycle RollingUpdate/Recreate.
  • Tính/quan sát maxSurge/maxUnavailable và capacity.
  • Có availability/downtime/response evidence.
  • Strategy decision xét app/schema/storage/session trade-off.
  • Failure/rollback/cleanup an toàn.
Transfer to exam / production

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

CKAD strategy task thường yêu cầu sửa đúng nested fields. Sau apply kiểm tra Pod count, Available, rollout status và downtime; nhớ maxUnavailable không được biến readiness failure thành “pass”.

Checkpoint · 3 phút

Kiểm tra nhanh

Câu hỏi: Workload không thể chạy đồng thời hai version vì schema không tương thích. Strategy nào có thể phù hợp hơn?

Kết thúc bài

Checklist trước khi sang Ngày 2