Blog
Thoughts on engineering, design, and building great products.
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.
ConfigMap và Secret: Tách Cấu Hình Khỏi Image
Cùng một image phải chạy được ở dev, staging, production — nghĩa là cấu hình không thể nằm cứng trong image. ConfigMap giữ cấu hình thường, Secret giữ dữ liệu nhạy cảm. Bài này: tạo và inject chúng vào pod qua biến môi trường lẫn file, kèm cảnh báo quan trọng về 'Secret chỉ là base64'.
Namespace, Labels và Selectors
Hai cơ chế tổ chức nền tảng của Kubernetes: namespace chia cluster thành những ngăn tách biệt, còn label/selector là cách gắn thẻ và chọn lọc tài nguyên — chính là 'chất keo' mà Deployment và Service dùng để tìm pod. Bài này làm rõ cả hai bằng ví dụ thật.
Service: Địa Chỉ Ổn Định và Cân Bằng Tải
Pod đến rồi đi, IP đổi liên tục — vậy gọi chúng kiểu gì? Service cho một địa chỉ ổn định trước nhóm pod và tự chia tải. Bài này: ClusterIP, NodePort, LoadBalancer khác nhau ra sao, DNS nội bộ giúp gọi service bằng tên, và kube-proxy đứng sau.
Deployment và ReplicaSet: Giữ Ứng Dụng Luôn Sống
Deployment là đối tượng bạn dùng nhiều nhất để chạy ứng dụng: nó giữ N bản sao pod luôn sống (qua ReplicaSet), tự dựng lại khi pod chết, scale lên/xuống, và cập nhật phiên bản dần không downtime — kèm rollback. Bài này chứng minh từng tính chất bằng lệnh thật.
Pod: Đơn Vị Nhỏ Nhất Trong Kubernetes
Pod là viên gạch nền của Kubernetes — không phải container, mà là một nhóm container chia sẻ mạng và lưu trữ. Bài này: viết pod bằng YAML, apply, xem trạng thái, đọc log, exec vào trong, port-forward, và bài học vì sao không ai chạy pod trần ở production.