
Kubernetes (viết tắt K8s) là hệ thống điều phối container mã nguồn mở, giúp tự động hoá việc triển khai, mở rộng và quản lý ứng dụng. Nó gom nhiều máy chủ — ảo hoá hay vật lý — thành một cụm thống nhất, trong đó các container luôn được lịch đặt và cân bằng tải một cách tự động. Bài viết này giải thích vì sao Kubernetes trở thành tiêu chuẩn của hạ tầng cloud-native, các thành phần cốt lõi bên trong, và khi nào bạn thực sự cần đến nó.

Container khác VM ở chỗ nào
Trước container, mỗi ứng dụng thường chạy trên một máy ảo riêng biệt kèm một hệ điều hành đầy đủ. Cách đó tốn nhiều tài nguyên: hàng chục ứng dụng cùng chạy trên một máy chủ vật lý sẽ phải khởi tạo hàng chục lớp hệ điều hành khác nhau, dù phần lớn các lớp đó giống hệt nhau.
Container giải quyết vấn đề này bằng cách chia sẻ nhân của hệ điều hành máy chủ. Mỗi container vẫn có hệ thống tệp và không gian tiến trình riêng, nhưng chạy trong cùng một không gian nhân với các container khác. Kết quả là khởi động nhanh hơn nhiều, dung lượng ổ đĩa nhỏ hơn, và việc đóng gói ứng dụng trở nên thuận tiện hơn nhiều.
Container đơn lẻ vẫn chưa đủ. Khi ứng dụng chạy hàng trăm bản sao cần được cân bằng tải, thay thế khi máy chủ hỏng, và cập nhật phiên bản không gián đoạn, bạn cần một lớp điều phối. Kubernetes chính là lớp đó.

Cluster, node và pod — ba khái niệm gốc
Toàn bộ hệ thống dựa trên ba khái niệm mà bạn cần nắm trước:
- Cluster — cụm máy chủ được Kubernetes quản lý, chạy cùng một cấu hình và tham gia vào một mạng logic duy nhất.
- Node — một máy vật lý hoặc máy ảo trong cụm. Mỗi node chạy các thành phần như kubelet và một container runtime.
- Pod — đơn vị lịch đặt nhỏ nhất của Kubernetes. Một pod chứa một hoặc nhiều container chia sẻ cùng địa chỉ IP và cùng không gian lưu trữ tạm thời.
Pod là đơn vị lịch đặch vì các container trong cùng một pod luôn được đặt trên cùng một node và chung địa chỉ IP. Đó là lý do bạn nên coi pod là một ứng dụng nhỏ nhất có thể, chứ không phải mỗi container là một pod riêng lẻ.
Điểm quan trọng: pod có vòng đời rất ngắn. Chúng được tạo, chạy, và bị xoá liên tục theo yêu cầu. Vì vậy, dữ liệu cần lưu lâu dài không nên đặt trong pod, mà phải nằm ở ổ đĩa bên ngoài hoặc cơ sở dữ liệu riêng.
Các thành phần chính bên trong
Kiến trúc Kubernetes chia thành hai phần lớn: các thành phần điều khiển (control plane) và các thành phần chạy trên từng node.
Control plane
Đây là bộ não của cụm, chịu trách nhiệm lên kế hoạch và điều phối toàn cục:
- API server — cửa vào duy nhất cho mọi thao tác quản trị. Cả giao diện
kubectllẫn các bộ điều khiển đều giao tiếp qua đây. - etcd — kho lưu trữ khóa-giá trị chứa toàn bộ trạng thái của cụm, là nguồn sự thật duy nhất.
- Scheduler — xem các pod đang chờ, tìm node phù hợp dựa trên tài nguyên trống và các ràng buộc, rồi gán pod đó lên node.
- Controller manager — chạy vòng lặp liên tục, so sánh trạng thái thực tế với trạng thái mong muốn trong khai báo, rồi tự điều chỉnh cho khớp.
Thành phần trên mỗi node
- Kubelet — tiến trình thường trú trên node, giám sát pod và bảo đảm chúng thực sự chạy đúng như khai báo.
- Container runtime — thực sự khởi động và dừng container; phổ biến nhất là containerd.
- Kube-proxy — duy trì các quy tắc định tuyến mạng, đưa lưu lượng đến đúng service và pod.
Điểm mấu chốt của mô hình khai báo: bạn mô tả trạng thái mong muốn, các controller lo phần còn lại. Nếu một pod bị xoá do máy chủ hỏng, controller sẽ tự tạo một pod thay thế mà không cần bạn can thiệp.
| Khái niệm | Bản chất | Vòng đời |
|---|---|---|
| Pod | Đơn vị lịch đặt nhỏ nhất | Ngắn, có thể bị thay thế bất kỳ lúc nào |
| Deployment | Bộ điều khiển số bản sao pod | Không giới hạn, khai báo số bản sao mong muốn |
| Service | Địa chỉ ổn định trước các pod thay đổi | Tồn tại suốt vòng đời ứng dụng |
| ConfigMap / Secret | Cấu hình và bí mật tách khỏi mã nguồn | Cập nhật không cần dựng lại image |
Kubernetes giải quyết điều gì
Lợi ích cốt lõi nằm ở bốn khả năng sau:
- Tự phục hồi — container chết được thay thế tự động, node hỏng thì workload được dời sang node khác.
- Tự mở rộng — tăng số bản sao pod khi tải cao, giảm khi tải thấp, nhờ Horizontal Pod Autoscaler theo dõi số liệu sử dụng.
- Cân bằng tải — service phân phối lưu lượng đều ra các pod phía sau, kể cả khi pod được thay thế giữa chừng.
- Triển khai không gián đoạn — rolling update thay thế pod dần dần, giữ cho dịch vụ luôn sẵn sàng trong suốt quá trình nâng cấp.
Khi nào bạn KHÔNG nên dùng Kubernetes
Kubernetes có giá thành cao về độ phức tạp vận hành. Một cụm nhỏ chạy vài container thường có thể giải quyết bằng docker compose hoặc một dịch vụ container đơn giản hơn nhiều. Hãy cân nhắc Kubernetes khi bạn có nhiều nhóm làm việc trên cùng hệ thống, cần triển khai thường xuyên, hoặc cần tính sẵn sàng cao với khả năng tự phục hồi.
Nếu bạn mới bắt đầu, các dịch vụ quản lý Kubernetes đã sẵn (managed Kubernetes) sẽ giúp bạn bỏ qua phần khó nhất là vận hành control plane.
Kubernetes và Hệ sinh thái cloud-native
Kubernetes không hoạt động trong cô lập. Nó là xương sống cho một hệ sinh thái rộng lớn, nơi các thành phần khác giải quyết những bài toán mà Kubernetes không đụng tới:
- Quản lý bí mật và chứng thư số — Vault, cert-manager.
- Cấu hình tập trung và phát tán cấu hình — Helm, Kustomize.
- Quan sát và giám sát — Prometheus, Grafana, OpenTelemetry.
- Triển khai liên tục — Argo CD, Flux.
- Mạng lưới dịch vụ và kiểm soát lưu lượng — Istio, Linkerd, Cilium.
Bạn có thể tìm hiểu tài liệu chính thức tại Kubernetes Documentation, hoặc đọc bài giới thiệu về kiến trúc Kubernetes để nắm sâu hơn về cách các thành phần phối hợp.
Tóm lại, Kubernetes là chuẩn công nghiệp cho việc điều phối container và là nền tảng của hầu hết hệ thống cloud-native hiện đại. Sức mạnh của nó nằm ở mô hình khai báo và khả năng tự phục hồi — bạn mô tả đích đến, hệ thống tự tìm cách đạt tới. Nhưng đừng vội: với hệ thống nhỏ, sự phức tạp thêm có thể không đáng để đánh đổi.
