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

Ngày 15: Liveness & Readiness Probe

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

Thiết kế HTTP liveness/readiness probe có chủ đích: endpoint contract, timing, failureThreshold, traffic gating, restart behavior và debug probe failure.

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

Thiết kế HTTP liveness/readiness probe có chủ đích: endpoint contract, timing, failureThreshold, traffic gating, restart behavior và debug probe failure.

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

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

  • Thực hành cấu hình liveness/readiness probe dạng HTTP
  • Test hành vi khi probe thất bạ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

Probe sai path/port hoặc chạy quá sớm khiến Pod bị restart hoặc bị loại khỏi Service dù app vẫn khởi động; probe quá dễ lại báo healthy khi dependency hỏng. Bài học phân biệt health signals và đo hành vi khi probe fail.

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ế
  • Readiness quyết định Pod có nhận traffic qua Service; fail readiness không nhất thiết restart container.
  • Liveness phát hiện process không còn healthy và kubelet có thể restart container; không dùng liveness để kiểm tra dependency tạm thời hoặc endpoint nặng.
  • Startup probe bảo vệ app khởi động chậm và sẽ học ở bài sau; nếu có startup probe, liveness/readiness chưa chạy theo cách người học thường tưởng.
  • Probe HTTP cần đúng scheme/host/port/path, response status và binding address; success endpoint phải phản ánh health contract phù hợp.

Hai probe, hai hành vi

Readiness trả lời “có nhận traffic không?”; fail readiness loại endpoint nhưng không tự restart container. Liveness trả lời “process có cần restart không?”; fail liên tiếp có thể restart. Probe phải kiểm tra contract nhẹ, local và ổn định; không nhồi dependency/DB nặng vào liveness.

Timing là design

Đặt initial delay/period/timeout/failure threshold theo startup và detection budget; ghi expected window. Sai path/port/status, app bind localhost hoặc endpoint có side effect tạo false fail. Sau test kiểm tra conditions, EndpointSlice, events, logs và restart count.

Bài tập

Dựng HTTP liveness/readiness khác nhau, mô phỏng path/port/status/slow failure, đo traffic/restart behavior, chỉnh timing và tạo variant. Restore valid probe, verify ổn định và cleanup.

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-day15 -o wide
kubectl describe pod POD_NAME -n ckad-day15
kubectl get endpointslice -n ckad-day15 -o wide
kubectl get pod POD_NAME -n ckad-day15 -o jsonpath="{.status.containerStatuses[*].restartCount} {.status.conditions}{"\n"}"
kubectl logs POD_NAME -n ckad-day15 --tail=100
kubectl get events -n ckad-day15 --sort-by=.lastTimestamp
Hands-on lab

Thực hành theo scenario

  1. Tạo namespace `ckad-day15`, Deployment app có `/healthz` và `/ready` khác nhau, Service và explicit HTTP probes; ghi expected Pod conditions/endpoints/restart count.
  2. Verify probe request path/port, Pod Ready, Service endpoints, events, container status và application logs; kiểm tra readiness fail làm endpoint serving thay đổi nhưng container không restart.
  3. Cố ý sai path/port/status hoặc làm endpoint trả failure trong lab; quan sát events, endpoint conditions, restart count và rollout. Không chỉ nhìn Pod phase.
  4. Điều chỉnh timing/threshold theo startup/traffic contract, tạo variant delay/slow response/temporary dependency; so sánh detection time và false positive risk.
  5. Restore valid probes, verify Ready/Available/endpoint/restart stability, rồi cleanup Deployment/Service/namespace; không dùng probe endpoint để expose secret hoặc tạo expensive dependency check.
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:

  • Readiness/liveness purpose và behavior phân biệt đúng.
  • HTTP path/port/status và endpoint contract có evidence.
  • Probe failure ảnh hưởng traffic/restart được quan sát.
  • Timing thresholds có rationale và variant.
  • Recovery/cleanup không để probe false green hoặc lộ data.
Transfer to exam / production

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

CKAD probe task hay sai `port`, `path` hoặc container name. Sau apply xem Pod conditions, endpoints, events và restart count; readiness fail không đồng nghĩa container crash.

Checkpoint · 3 phút

Kiểm tra nhanh

Câu hỏi: Readiness probe fail liên tục nhưng liveness pass. Hành vi mong đợi là gì?

Kết thúc bài

Checklist trước khi sang Ngày 2