Blog
Thoughts on engineering, design, and building great products.
Capstone: Deploy Ứng Dụng Hoàn Chỉnh và Tổng Kết Series
Ghép tất cả: một ứng dụng nhiều thành phần (frontend nhiều bản sao + database có lưu trữ) triển khai lên minikube từ đầu tới cuối, dùng đủ Deployment, Service, ConfigMap/Secret, PVC, Ingress, probes và resources. Rồi dọn dẹp cluster, tổng kết hành trình và gợi ý học tiếp.
Quan Sát và Gỡ Lỗi: logs, exec, describe, events
Khi pod không chạy, bạn cần biết nhìn vào đâu. Bài này rèn bộ kỹ năng gỡ lỗi hằng ngày qua hai ca hỏng thật — ImagePullBackOff và CrashLoopBackOff: đọc describe/events để biết vì sao, logs để xem app nói gì, exec để soi bên trong, và dashboard để nhìn tổng thể.
Các Loại Workload: StatefulSet, DaemonSet, Job và CronJob
Deployment hợp cho app không trạng thái, nhưng không phải mọi thứ đều như vậy. StatefulSet cho app cần danh tính ổn định (database), DaemonSet cho thứ phải chạy trên mọi node (agent log), Job/CronJob cho tác vụ chạy-rồi-xong. Bài này chạy thật từng loại và chỉ rõ khi nào dùng cái nào.
Resource Requests/Limits và Autoscaling (HPA)
Mỗi pod cần nói rõ nó muốn bao nhiêu CPU/RAM — đó là cách scheduler đặt pod đúng chỗ và cluster không sập vì một pod ngốn hết tài nguyên. Khai báo xong, HorizontalPodAutoscaler tự tăng/giảm số bản sao theo tải. Bài này tạo tải thật và xem HPA scale từ 1 lên nhiều pod.
Health Checks: Liveness và Readiness Probes
Làm sao Kubernetes biết một pod 'Running' có thật sự khoẻ và sẵn sàng nhận traffic? Qua probe. Liveness probe restart container treo, readiness probe giữ traffic khỏi pod chưa sẵn sàng. Bài này demo cả hai bằng pod cố tình hỏng, xem K8s phản ứng.
Ingress: Định Tuyến HTTP Vào Cluster
NodePort cho mỗi service một cổng lạ — không ổn khi có nhiều service. Ingress là một điểm vào HTTP duy nhất, định tuyến theo tên miền và đường dẫn tới đúng service, kèm TLS. Bài này: bật ingress addon của minikube, viết Ingress rule, và test định tuyến theo Host.
Lưu Trữ: Volumes, PV, PVC và StorageClass
Dữ liệu trong pod bay hơi cùng pod — không ổn cho database hay file người dùng. Kubernetes tách 'yêu cầu lưu trữ' (PVC) khỏi 'ổ đĩa thật' (PV), với StorageClass cấp phát động. Bài này chứng minh dữ liệu sống lâu hơn pod bằng một thí nghiệm xóa-rồi-dựng-lại.