Khóa học
Kubernetes đã trở thành công nghệ mặc định để quản lý các ứng dụng dạng container trong môi trường đám mây hiện đại. Khi các tổ chức chuyển dịch sang microservices và kiến trúc cloud‑native, Kubernetes cung cấp mọi thứ họ cần để tự động hóa triển khai, mở rộng ứng dụng và đảm bảo tính sẵn sàng cao.
Kubernetes là một trình điều phối container mã nguồn mở giúp đơn giản hóa quá trình phức tạp khi quản lý container ở quy mô lớn. Nó trừu tượng hóa các mối quan tâm về hạ tầng, cho phép nhà phát triển tập trung xây dựng ứng dụng thay vì lo lắng về máy chủ bên dưới.
Hiểu kiến trúc Kubernetes là điều thiết yếu đối với bất kỳ ai muốn triển khai và quản lý các ứng dụng có khả năng mở rộng, linh hoạt và đạt chuẩn sản xuất.
Hôm nay, tôi muốn chia sẻ cái nhìn sâu hơn về kiến trúc Kubernetes với những người học trình độ trung cấp đã quen với các khái niệm cơ bản của Kubernetes.
Kubernetes là gì?
Kubernetes là một hệ thống phân tán mạnh mẽ được thiết kế để điều phối và quản lý các ứng dụng dạng container ở quy mô lớn. Nó cho phép các tổ chức triển khai khối lượng công việc trên nhiều máy vật lý hoặc ảo, gọi là Node, đảm bảo ứng dụng luôn sẵn sàng, có khả năng mở rộng và chống chịu lỗi.
Một trong những thế mạnh cốt lõi của Kubernetes là khả năng xử lý hiệu quả các khối lượng công việc động. Bằng cách tự động phân phối container trên các node, Kubernetes đảm bảo ứng dụng có thể mở rộng theo chiều ngang, cân bằng khối lượng công việc dựa trên tài nguyên sẵn có. Nếu một node bị quá tải, Kubernetes sẽ sắp xếp lại khối lượng công việc sang các node lân cận khỏe mạnh, giảm thiểu thời gian chết và duy trì hiệu năng.
Nếu bạn vẫn là người mới với công nghệ này, hãy xem khóa học Introduction to Kubernetes để bắt đầu.
Lược sử về Kubernetes
Google ban đầu phát triển Kubernetes như một phiên bản kế nhiệm mã nguồn mở của Borg, hệ thống quản lý container nội bộ của họ. Ra mắt năm 2014, Kubernetes nhanh chóng trở thành tiêu chuẩn công nghiệp cho điều phối container, được hỗ trợ bởi một hệ sinh thái rộng lớn gồm công cụ và nhà cung cấp đám mây. Ngày nay, nó được duy trì bởi Cloud Native Computing Foundation (CNCF) và được ứng dụng rộng rãi trong nhiều ngành để quản lý các ứng dụng cloud‑native.
Kiến trúc Kubernetes là gì?
Sơ đồ sau minh họa trực quan kiến trúc của Kubernetes:

Hình do Tác giả thực hiện. Kiến trúc Kubernetes.
- Các thành phần Control Plane quản lý cụm và đảm bảo trạng thái mong muốn được duy trì.
- Các nút Worker thực thi khối lượng công việc, chạy container bên trong Pod.
- API Server đóng vai trò cầu nối giữa tương tác của người dùng (qua UI hoặc CLI) và cụm.
- Các tiện ích bổ sung về mạng và lưu trữ mở rộng khả năng của Kubernetes cho môi trường sản xuất.
Với nền tảng này, giờ đây chúng ta có thể khám phá vai trò chi tiết của từng thành phần trong kiến trúc cụm của Kubernetes.
Các thành phần cốt lõi của Kiến trúc Kubernetes
Kubernetes gồm hai lớp chính: Control Plane và các thành phần Node. Hãy lần lượt tìm hiểu:
Control Plane
Control Plane của Kubernetes là lớp quản trị trung tâm chịu trách nhiệm duy trì trạng thái mong muốn của cụm, lập lịch khối lượng công việc và xử lý tự động hóa. Nó đảm bảo ứng dụng chạy như kỳ vọng bằng cách liên tục giám sát điều kiện cụm và thực hiện điều chỉnh cần thiết.

Hình do Tác giả thực hiện. Các thành phần Control Plane.
API Server (kube-apiserver)
API Server là cổng vào cụm Kubernetes. Nó xử lý mọi yêu cầu quản trị, dù đến từ CLI (kubectl), bảng điều khiển UI hay công cụ tự động hóa. Nếu không có API Server đang chạy, cụm vẫn hoạt động, nhưng quản trị viên sẽ mất quyền kiểm soát trực tiếp đối với triển khai và cấu hình.
Controller Manager (kube-controller-manager)
Kubernetes vận hành theo mẫu controller, trong đó các controller giám sát trạng thái hệ thống và thực hiện hành động khắc phục. Controller Manager giám sát các controller này, đảm bảo những chức năng thiết yếu như:
- Mở rộng/thu hẹp khối lượng công việc dựa trên nhu cầu.
- Quản lý các node gặp sự cố và sắp xếp lại khối lượng công việc.
- Áp đặt trạng thái mong muốn (ví dụ, đảm bảo một Deployment luôn chạy đúng số replica được chỉ định).
Scheduler (kube-scheduler)
Scheduler gán Pod cho các nút worker, xét đến các yếu tố như:
- Tài nguyên sẵn có (CPU, bộ nhớ).
- Quy tắc ưu tiên/không ưu tiên node (affinity/anti‑affinity).
- Phân bố Pod để tránh quá tải.
Nó tuân theo quy trình lọc và chấm điểm để chọn node tối ưu cho mỗi Pod mới, đảm bảo sử dụng tài nguyên cân bằng.
etcd (Kho khóa‑giá trị phân tán)
etcd đóng vai trò nguồn dữ liệu chân lý duy nhất của Kubernetes, lưu trữ toàn bộ dữ liệu cụm, bao gồm:
- Thiết lập cấu hình.
- Secrets và thông tin xác thực.
- Trạng thái hiện tại và lịch sử của khối lượng công việc.
Vì xâm phạm etcd đồng nghĩa với quyền kiểm soát toàn bộ cụm, nên nó phải được bảo mật và cấp đủ tài nguyên phần cứng để duy trì hiệu năng và độ tin cậy.
Cloud Controller Manager
Đối với các triển khai Kubernetes trên đám mây, Cloud Controller Manager tích hợp cụm với dịch vụ của nhà cung cấp đám mây, xử lý:
- Cấp phát load balancer.
- Phân bổ các volume lưu trữ lâu bền.
- Mở rộng hạ tầng động (ví dụ: thêm máy ảo làm node)
Thành phần trên Node
Các nút Worker là xương sống tính toán của cụm Kubernetes, chịu trách nhiệm chạy khối lượng công việc của ứng dụng. Mỗi node vận hành độc lập nhưng luôn duy trì liên lạc với control plane để điều phối trơn tru.
Kubernetes động điều phối Pod lên các node worker dựa trên tài nguyên sẵn có và nhu cầu tải. Node có thể là máy vật lý hoặc ảo, và cụm đạt chuẩn sản xuất thường gồm nhiều node để cho phép mở rộng ngang và sẵn sàng cao. Mỗi node worker bao gồm các thành phần thiết yếu sau:
Kubelet: Tác nhân của node
Kubelet là tác nhân cấp node chủ đạo quản lý việc thực thi container. Nó:
- Liên tục trao đổi với API Server để nhận chỉ thị.
- Đảm bảo Pod chạy theo đúng đặc tả của chúng.
- Kéo image container và khởi động các container cần thiết.
- Giám sát sức khỏe container và khởi động lại khi cần.
Thiếu Kubelet, node sẽ bị tách khỏi cụm và khối lượng công việc được lập lịch sẽ không được quản lý đúng cách.
Kube‑Proxy: Mạng và cân bằng tải
Kube‑Proxy chịu trách nhiệm quản lý giao tiếp mạng giữa các dịch vụ chạy trên các node khác nhau. Nó:
- Cấu hình các quy tắc mạng để giao tiếp mượt mà giữa các Pod.
- Tạo thuận lợi cho khám phá dịch vụ và cân bằng tải cho mạng giữa các Pod.
- Đảm bảo lưu lượng được định tuyến chính xác giữa các node và khách hàng bên ngoài.
Nếu Kube‑Proxy gặp sự cố, các Pod trên node bị ảnh hưởng có thể không truy cập được, làm gián đoạn lưu lượng mạng trong cụm.
Container Runtime: Chạy container
Container runtime là phần mềm thực thi các ứng dụng dạng container trong Pod. Kubernetes hỗ trợ nhiều tùy chọn runtime, bao gồm:
- containerd (được dùng phổ biến nhất)
- CRI‑O (nhẹ và thuần Kubernetes)
- Docker Engine (hỗ trợ di sản qua dockershim)
Runtime tương tác với hệ điều hành để cô lập khối lượng công việc bằng các công nghệ như cgroups và namespace, đảm bảo sử dụng tài nguyên hiệu quả.
Cách các Node Worker tương tác với Control Plane
- Node gia nhập cụm bằng token do control plane cấp.
- Khi node đã được đăng ký, scheduler sẽ gán khối lượng công việc dựa trên tài nguyên sẵn có của nó.
- Control plane liên tục giám sát sức khỏe node và có thể sắp xếp lại khối lượng công việc nếu node trở nên không khỏe hoặc quá tải.
Bằng cách kết hợp Kubelet, Kube‑Proxy và một container runtime, các node worker tạo nên lớp thực thi có khả năng mở rộng và linh hoạt để vận hành ứng dụng Kubernetes.
Mở rộng Kubernetes bằng add‑on
Kubernetes được thiết kế có tính mở rộng cao, cho phép bạn tùy biến và tăng cường chức năng thông qua các add‑on. Trong khi control plane và node worker tạo nên hạ tầng cốt lõi, các add‑on cung cấp năng lực mạng, lưu trữ, giám sát và tự động hóa giúp Kubernetes mạnh mẽ hơn và sẵn sàng cho môi trường sản xuất.
Giải pháp mạng
Mạng trong Kubernetes tuân theo cách tiếp cận dựa trên plugin, yêu cầu một plugin tương thích CNI (Container Network Interface) để kích hoạt giao tiếp liền mạch giữa các Pod. Một số giải pháp mạng được dùng rộng rãi gồm:
- Calico: Chính sách mạng an toàn và định tuyến hiệu năng cao.
- Cilium: Mạng và bảo mật dựa trên eBPF.
- Flannel: Mạng overlay nhẹ và dễ cấu hình.
Hầu hết các bản phân phối Kubernetes quản lý sẵn đều được cấu hình trước với một giải pháp mạng, nhưng các cụm tự quản lý cần cài đặt thủ công plugin CNI.
Giải pháp lưu trữ
Kubernetes cung cấp cấp phát lưu trữ động thông qua Storage Class, cho phép khối lượng công việc tương tác với nhiều backend lưu trữ khác nhau:
- Lưu trữ cục bộ: Sử dụng hệ thống tệp của node.
- Lưu trữ khối trên đám mây: Tích hợp với nhà cung cấp đám mây (ví dụ: AWS EBS, Azure Disk, GCP Persistent Disks).
- Lưu trữ phân tán: Các giải pháp như Ceph, Longhorn và Rook cho phép lưu trữ lâu bền, nhân bản trên nhiều node.
Vì Kubernetes không bao gồm kho lưu trữ image container tích hợp sẵn, bạn phải sử dụng registry bên ngoài (ví dụ: Docker Hub, Harbor hoặc Amazon ECR) để lưu trữ và phân phối image container.
Giám sát và khả năng quan sát
Giám sát và ghi log hiệu quả là điều thiết yếu để quản lý khối lượng công việc trên Kubernetes. Các giải pháp phổ biến gồm:
- Prometheus: Thu thập số liệu và cảnh báo.
- Grafana: Bảng điều khiển trực quan hóa.
- ELK Stack (Elasticsearch, Logstash, Kibana): Tổng hợp và phân tích log.
Những công cụ này giúp theo dõi sức khỏe cụm, chẩn đoán sự cố và tối ưu hiệu năng.
Ingress controller
Ingress controller quản lý truy cập từ bên ngoài vào các ứng dụng bên trong cụm, xử lý lưu lượng HTTP/HTTPS và cân bằng tải. Các lựa chọn phổ biến gồm:
- NGINX Ingress Controller – Được dùng rộng rãi để quản lý lưu lượng web.
- Traefik – Định tuyến động với hỗ trợ Let’s Encrypt tích hợp.
- HAProxy Ingress – Cân bằng tải hiệu năng cao.
Chức năng tùy biến với CRD
Kubernetes cho phép người dùng mở rộng API thông qua Custom Resource Definition (CRD), cho phép tạo đối tượng tùy chỉnh và quy trình tự động hóa.
Operator và controller có thể tự động hóa các tác vụ phức tạp, như:
- Cấp phát cơ sở dữ liệu khi một đối tượng PostgresDatabaseConnection tùy chỉnh được thêm vào.
- Quản lý chính sách bảo mật một cách động.
- Mở rộng ứng dụng dựa trên chỉ số tùy chỉnh.
Bằng cách tận dụng CRD, Kubernetes có thể được biến thành một nền tảng tùy biến hoàn toàn, thích ứng với nhu cầu kinh doanh cụ thể.
Kiến trúc Cụm Kubernetes
Kubernetes giới thiệu nhiều lớp trừu tượng để giúp định nghĩa và quản lý ứng dụng hiệu quả. Các lớp trừu tượng này đơn giản hóa việc triển khai, mở rộng và quản trị trên môi trường phân tán.
Master và worker node
Một cụm Kubernetes gồm hai loại node chính:
- Master node (Control Plane): Chịu trách nhiệm điều phối và quản lý cụm. Các node này chạy API Server, Scheduler, Controller Manager và etcd để đảm bảo khối lượng công việc được triển khai và duy trì như mong đợi.
- Worker node (Data Plane): Thực thi khối lượng công việc ứng dụng bằng cách chạy các pod chứa container. Mỗi worker node được quản lý bởi Kubelet, tương tác với Kube‑Proxy cho mạng và chạy một container runtime như Docker hoặc containerd.
Kết hợp lại, master và worker node tạo nên hạ tầng tự phục hồi, có khả năng mở rộng, nơi ứng dụng có thể chạy liền mạch. Nếu bạn muốn hiểu sâu hơn về container hóa và ảo hóa, hãy theo dõi lộ trình Containerization and Virtualization do chuyên gia hướng dẫn.
Kiến trúc Pod
Trọng tâm của Kubernetes là Pod, đơn vị triển khai nhỏ nhất trong hệ thống. Một Pod bao bọc một hoặc nhiều container chia sẻ lưu trữ, mạng và thiết lập cấu hình.
- Pod một container: Cấu hình phổ biến nhất, mỗi Pod chứa một container chạy một microservice.
- Pod nhiều container: Dùng khi các container gắn kết chặt cần chia sẻ tài nguyên và giao tiếp hiệu quả.
Pod là dạng ngắn hạn, nghĩa là có thể được sắp xếp lại hoặc khởi động lại khi cần. Kubernetes quản lý Pod thông qua Deployment, StatefulSet và DaemonSet, đảm bảo khả năng mở rộng và sẵn sàng.

Hình do Tác giả thực hiện. Kiến trúc của Pod.
Namespace và phân đoạn
Namespace cho phép phân đoạn logic bên trong một cụm Kubernetes. Chúng giúp:
- Cô lập khối lượng công việc cho các đội, dự án hoặc môi trường khác nhau (ví dụ: dev, staging, production).
- Áp dụng kiểm soát truy cập dựa trên vai trò (RBAC) để hạn chế quyền.
- Quản lý hạn ngạch tài nguyên để ngăn tiêu thụ quá mức.
Bằng cách tổ chức khối lượng công việc theo namespace, Kubernetes cho phép bảo mật tốt hơn, quản trị tài nguyên hiệu quả và khả năng mở rộng trong một cụm duy nhất.
Với nền tảng này, chúng ta có thể khám phá cách kiến trúc Kubernetes hỗ trợ triển khai microservices trong phần tiếp theo.
Kiến trúc Microservices trên Kubernetes
Kubernetes lý tưởng cho microservices, mang lại khả năng mở rộng, độ bền và tự động hóa cho các ứng dụng phân tán. Nó cho phép:
- Tự động mở rộng: Điều chỉnh tài nguyên dựa trên nhu cầu.
- Tự phục hồi: Phát hiện và thay thế container gặp lỗi.
- Khám phá dịch vụ và cân bằng tải: Giao tiếp hiệu quả giữa các microservice.
- Tính di động: Chạy trên cả môi trường đám mây và tại chỗ.
- Cấu hình khai báo: Dùng YAML cho các triển khai có thể dự đoán.
Một mối băn khoăn phổ biến là nên dùng Kubernetes hay Docker Compose cho microservices của bạn. Nếu đó là trường hợp của bạn, tôi khuyên bạn nên đọc hướng dẫn Docker Compose vs Kubernetes để hiểu rõ hơn.
Thực tiễn tốt nhất
Dưới đây, chúng tôi nêu bật một số thực tiễn tốt nhất cần tuân thủ:
- Namespace để cô lập khối lượng công việc: Tổ chức và cô lập khối lượng công việc để tăng bảo mật và quản lý tài nguyên.
- Kubernetes Service & Ingress để quản lý lưu lượng: Kích hoạt giao tiếp hiệu quả giữa các microservice và khách hàng bên ngoài.
- Autoscaling & Rolling Update để hiệu năng liền mạch: Sử dụng Horizontal Pod Autoscaler và triển khai cuốn chiếu để duy trì tính sẵn sàng.
- ConfigMap & Secret cho cấu hình an toàn: Quản lý dữ liệu nhạy cảm và cấu hình môi trường một cách an toàn.
- Giám sát & Ghi log với Prometheus và Grafana: Nắm bắt thông tin và khắc phục sự cố hiệu quả với các công cụ quan sát mạnh mẽ.
Bằng cách làm theo các thực tiễn này, Kubernetes giúp đơn giản hóa triển khai microservices, đảm bảo linh hoạt và sẵn sàng cao.
Trường hợp sử dụng Kiến trúc Kubernetes
Kubernetes được ứng dụng rộng rãi trong nhiều ngành nhờ khả năng mở rộng ứng dụng, đảm bảo sẵn sàng cao và hỗ trợ môi trường đa đám mây. Kiến trúc của nó cho phép quản lý khối lượng công việc trơn tru, khiến nó trở thành lựa chọn ưa thích cho các ứng dụng cloud‑native hiện đại.
Khả năng mở rộng ứng dụng
Kubernetes cho phép mở rộng theo chiều ngang, giúp ứng dụng xử lý hiệu quả các tải thay đổi:
- Horizontal Pod Autoscaler (HPA) điều chỉnh số lượng Pod dựa trên CPU, bộ nhớ hoặc chỉ số tùy chỉnh.
- Cluster Autoscaler động thêm hoặc bớt node worker để phù hợp nhu cầu.
- Cân bằng tải đảm bảo lưu lượng được phân phối đều giữa các bản sao.
Điều này khiến Kubernetes lý tưởng cho các ứng dụng có lưu lượng biến động, như nền tảng thương mại điện tử, dịch vụ streaming và ứng dụng SaaS.
Tính sẵn sàng cao và khả năng chịu lỗi
Kubernetes đảm bảo vận hành liên tục bằng cách:
- Nhân bản khối lượng công việc trên nhiều node để ngăn gián đoạn dịch vụ.
- Cơ chế tự phục hồi tự động khởi động lại container gặp lỗi.
- Bầu chọn leader trong control plane để duy trì ổn định khi xảy ra sự cố.
Những tính năng này khiến Kubernetes phù hợp với các ứng dụng nhiệm vụ trọng yếu yêu cầu thời gian chết gần như bằng không.
Triển khai hybrid và đa đám mây
Kubernetes trừu tượng hóa độ phức tạp của hạ tầng, giúp dễ dàng triển khai khối lượng công việc trên môi trường tại chỗ, lai và đa đám mây:
- Quản lý ứng dụng nhất quán trên AWS, Google Cloud, Azure và các cụm tại chỗ.
- Định tuyến lưu lượng giữa các nhà cung cấp đám mây để tối ưu độ trễ và chi phí.
- Chiến lược khôi phục thảm họa với thiết lập chuyển đổi dự phòng liên đám mây.
Kết luận
Kubernetes đã cách mạng hóa việc điều phối container, trở thành tiêu chuẩn ngành để triển khai, quản lý và mở rộng ứng dụng trong môi trường đám mây hiện đại. Kiến trúc của nó cho phép tự động mở rộng, sẵn sàng cao và tương thích liên đám mây, biến nó thành công cụ mạnh mẽ cho các tổ chức áp dụng microservices và chiến lược cloud‑native.
Bằng cách hiểu kiến trúc Kubernetes, các nhóm phát triển và CNTT có thể:
- Tối ưu hiệu năng ứng dụng thông qua lập lịch và mở rộng hiệu quả.
- Nâng cao khả năng chịu lỗi của hệ thống với cơ chế tự phục hồi và sẵn sàng cao.
- Đảm bảo triển khai đa đám mây và lai liền mạch, tránh khóa chặt nhà cung cấp.
Từ quản trị control plane đến thực thi trên node worker và các add‑on có thể tùy biến, Kubernetes cung cấp sự linh hoạt cần thiết để vận hành ứng dụng ở quy mô lớn. Khi hệ sinh thái đám mây phát triển, Kubernetes vẫn ở tuyến đầu—trao quyền cho doanh nghiệp đổi mới với sự tự tin.
Kubernetes là công cụ mạnh mẽ để quản lý ứng dụng hiện đại, nhưng để thành thạo cần có trải nghiệm thực hành. Hãy tiếp tục học với:
- khóa học Introduction to Kubernetes để học các nền tảng của Kubernetes và triển khai, điều phối container bằng Manifests và lệnh kubectl.
- Docker Compose vs Kubernetes để chọn công cụ phù hợp với nhu cầu của bạn.
- Containerization for Machine Learning để áp dụng Kubernetes cho quy trình AI/ML.
Josep là một Nhà khoa học dữ liệu tự do chuyên về các dự án châu Âu, có chuyên môn về lưu trữ dữ liệu, xử lý, phân tích nâng cao và kể chuyện bằng dữ liệu tạo tác động.
Với vai trò giảng dạy, anh phụ trách môn Dữ liệu lớn trong chương trình Thạc sĩ tại Đại học Navarra và chia sẻ góc nhìn qua các bài viết trên các nền tảng như Medium, KDNuggets và DataCamp. Josep cũng viết về Dữ liệu và Công nghệ trong bản tin Databites (databites.tech).
Anh có bằng Cử nhân Vật lý Kỹ thuật từ Đại học Bách khoa Catalonia và bằng Thạc sĩ Hệ thống Tương tác Thông minh từ Đại học Pompeu Fabra.
