Learning Outcome & Exercises: Kubernetes
Tổng kết chương Kubernetes: học xong mình phải làm được gì, và làm bài tập nào để chứng minh?
Đọc hiểu chưa đủ để đi phỏng vấn. Mỗi chương kết thúc bằng những việc làm được và chứng minh được: có code chạy, có test cho cả trường hợp lỗi, có log hoặc số đo. Bài tập nằm trong repo riêng java-backend-interview-labs, thư mục labs/kubernetes.
1. Mục tiêu đầu ra
Học xong chương này, bạn tự làm được:
- Deploy Spring Boot với Deployment, Service, readiness/liveness probe đúng ý nghĩa.
- Cấu hình requests/limits và HPA, quan sát scale khi có tải.
- Debug Pod CrashLoopBackOff / OOMKilled bằng kubectl describe và logs.
2. Basic: Deploy + probe
Trạng thái: ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành
Deployment 2 replica + Service + probe dùng actuator; rolling update không lỗi request.
Bài liên quan: Pod & probe, Deployment, StatefulSet, Job, Service & Ingress
Hoàn thành khi:
- Manifest
- Log rollout
3. Intermediate: Config & resource
Trạng thái: ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành
ConfigMap/Secret (không commit giá trị thật), requests/limits, HPA theo CPU; bắn tải và ghi số replica.
Bài liên quan: ConfigMap, Secret, RBAC, Resource & autoscaling
Hoàn thành khi:
- kubectl get hpa theo thời gian
4. Challenge: Troubleshooting & Helm
Trạng thái: ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành
Cố tình gây OOMKilled và probe sai; chẩn đoán; đóng gói thành Helm chart có values theo môi trường.
Bài liên quan: Troubleshooting, Helm, Giám sát Kubernetes: Prometheus stack & dashboard
Hoàn thành khi:
- Ghi chú chẩn đoán
- helm template chạy được
- Cần cluster local (kind/minikube)
5. Tiêu chí hoàn thành chung
- Tự giải thích được bài toán và vì sao chọn giải pháp.
- Code chạy được bằng lệnh ghi trong README, không chứa secret.
- Có test tự động cho happy path và failure path.
- Có log hoặc số đo trong
evidence/chứng minh kết quả. - Có câu trả lời phỏng vấn ngắn bằng tiếng Việt và tiếng Anh.
- README của lab có link ngược về bài học tương ứng.
6. Lab và trạng thái
| Mức | Bài tập | Trạng thái | Test / bằng chứng |
|---|---|---|---|
| Basic | Deploy + probe | ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành | — |
| Intermediate | Config & resource | ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành | — |
| Challenge | Troubleshooting & Helm | ⬜ Chưa triển khai: chưa có code/test, chưa tính là hoàn thành | — |
Repo lab: java-backend-interview-labs/labs/kubernetes. TODO: link GitHub là placeholder cho tới khi repo được push.
evidence/; chỉ đánh dấu xong khi có bằng chứng.Phỏng vấn hỏi về Kubernetes, câu nào hay gặp nhất và trả lời sao?
Q1. Readiness và liveness probe khác nhau thế nào?
🇻🇳 Tiếng Việt:
Readiness quyết định Pod có nhận traffic không; fail thì bị gỡ khỏi Service. Liveness quyết định có restart container không. Không nên để liveness phụ thuộc database, nếu không DB chậm sẽ làm restart hàng loạt.
🇬🇧 English:
Readiness decides whether a Pod receives traffic; when it fails the Pod is removed from the Service. Liveness decides whether the container is restarted. Liveness should not depend on the database, or a slow database causes mass restarts.
Cách nhớ ngắn gọn
- Mỗi bài tập = code + test + log.
- Luôn có ít nhất một failure case.
- Chưa có bằng chứng thì chưa xong.
Tự kiểm tra
Bài tập Basic (Deploy + probe) được coi là xong khi nào?
Manifest; Log rollout. Chưa có code chạy và bằng chứng thì chưa tính là xong.
Bài tập Intermediate (Config & resource) được coi là xong khi nào?
kubectl get hpa theo thời gian. Chưa có code chạy và bằng chứng thì chưa tính là xong.
Bài tập Challenge (Troubleshooting & Helm) được coi là xong khi nào?
Ghi chú chẩn đoán; helm template chạy được; Cần cluster local (kind/minikube). Chưa có code chạy và bằng chứng thì chưa tính là xong.