Blog
Thoughts on engineering, design, and building great products.
Container Runtime và CRI: Cài containerd Trên Worker
kubelet không tự chạy container — nó ủy thác việc đó cho một container runtime qua một giao diện chuẩn tên là CRI. Bài này giải thích CRI là gì, ai trong chồng kubelet → containerd → runc làm việc gì, rồi cài containerd v2.3 cùng runc trên hai worker, chỉnh cgroup driver cho khớp kubelet, và kiểm chứng bằng crictl.
HAProxy Gom Ba API Server và kubectl Từ Xa
Ba api-server đang chạy nhưng client phải biết gọi cái nào. Bài này dựng HAProxy trên lb-0 để gom chúng thành một địa chỉ duy nhất ở chế độ TCP passthrough — giữ nguyên mTLS đầu-cuối, rồi cấu hình kubectl trên laptop trỏ qua Elastic IP và thiết lập RBAC để api-server gọi được xuống kubelet.
controller-manager và scheduler: Control Loop và Leader Election
Hai thành phần biến trạng thái mong muốn thành hành động: kube-controller-manager chạy hàng chục control loop, kube-scheduler chọn node cho pod. Bài này dựng cả hai trên ba controller, giải thích cách scheduler lọc và chấm điểm node, rồi xem leader election hoạt động thật — ba bản chạy nhưng chỉ một làm việc.
kube-apiserver: Cổng Vào Cluster và Dây Chuyền Xử Lý Request
Thành phần ngồi ngay trước etcd và là cổng vào duy nhất của cluster. Bài này đi sâu vào dây chuyền authn → authz → admission mà mọi request phải qua, rồi dựng kube-apiserver trên cả ba controller: nối vào etcd bằng TLS, bật mã hóa Secret, và kiểm chứng thật rằng Secret đã được mã hóa khi đọc thẳng bytes trong etcd.
etcd: Quorum, Raft và Dựng Cluster Ba Node
Thành phần đầu tiên của control plane, và là nền móng cho mọi thứ phía trên: etcd. Bài này giải thích etcd lưu gì, vì sao nó cần số node lẻ và quorum nghĩa là gì qua thuật toán Raft — rồi dựng một cluster etcd ba node trên các controller với TLS, và kiểm chứng leader cùng sức khỏe cluster.
Gói Cert Thành kubeconfig và Cấu Hình Mã Hóa Secret
Certificate đã có, nhưng các binary Kubernetes đọc chúng qua một dạng file gói sẵn: kubeconfig. Bài này sinh kubeconfig cho admin, controller-manager, scheduler, kube-proxy và từng kubelet — giải thích mô hình cluster/user/context và vì sao control plane trỏ về 127.0.0.1 còn worker trỏ qua load balancer. Cuối bài tạo file mã hóa Secret at rest cho etcd.
Tự Tay Ký Toàn Bộ Certificate Bằng cfssl
Phần lõi của 'from scratch': dùng cfssl tạo ba CA (Kubernetes, etcd, front-proxy) rồi ký toàn bộ certificate cho từng thành phần — apiserver với SAN đầy đủ, kubelet từng worker với CN/O đặc biệt, controller-manager, scheduler, kube-proxy, client cho etcd, và cặp khóa service-account. Làm từng cái, đúng từng trường, rồi verify chuỗi tin cậy.