Kubernetes (K8s) là gì? Tìm hiểu về kiến trúc, chức năng, cơ chế hoạt động và Kubernetes Engine Services
Xem nhanh
Kubernetes (K8s) là nền tảng/công cụ điều phối container mã nguồn mở, hoạt động như “hệ điều hành cho đám mây” với khả năng tự động hóa triển khai, mở rộng và phục hồi các ứng dụng. Nội dung này giúp bạn hiểu rõ kiến trúc K8s (Kubernetes Architecture) gồm Control Plane và Worker Nodes, các khái niệm cốt lõi như Pod, Deployment, Service, cùng loạt chức năng quan trọng: cân bằng tải (service discovery and load balancing), điều phối lưu trữ (storage orchestration), autoscaling, khả năng tự phục hồi (self-healing) và quản lý cấu hình, bảo mật cao (secret and configuration management).
Ngoài ra, bạn sẽ được tìm hiểu thêm cơ chế hoạt động - vận hành cốt lõi, ưu – nhược điểm của K8s (Kubernetes). Nếu doanh nghiệp đang mong muốn tìm giải pháp về việc triển khai và mở rộng ứng dụng Cloud-Native trên hạ tầng cloud, thì có thể tham khảo dịch vụ Container Orchestration Engine: FPT Kubernetes Engine và FPT Kubernetes Engine with GPU. Tuy nhiên, với những hệ thống vừa và nhỏ, nhiều doanh nghiệp chọn dịch vụ cho thuê VPS trước khi chuyển lên Kubernetes để tiết kiệm chi phí.
Kubernetes (thường được gọi là K8s) là một nền tảng điều phối container mã nguồn mở (open-source container orchestration platform), hoạt động như một hệ điều hành cho đám mây (cloud operating system). Mục tiêu chính của Kubernetes là tự động hóa toàn bộ vòng đời ứng dụng container hóa, bao gồm việc triển khai, mở rộng quy mô (scaling), phục hồi lỗi (self-healing), khám phá dịch vụ (service discovery), và cân bằng tải (load balancing). Hiểu đơn giản, Kubernetes giống như một “hệ điều hành” chạy trên nhiều máy chủ, giúp bạn quản lý các ứng dụng dễ dàng hơn.
Ban đầu Kubernetes được phát triển bởi Google và hiện được duy trì bởi Cloud Native Computing Foundation (CNCF) và đã trở thành tiêu chuẩn công nghiệp trong việc xây dựng, quản lý hệ thống cloud-native và kiến trúc microservices.
Không chỉ là một công cụ, Kubernetes là một hệ sinh thái hoàn chỉnh (ecosystem), cung cấp framework vững chắc cho việc triển khai, vận hành và quản lý hệ thống phân tán (distributed systems) ở quy mô lớn, với khả năng linh hoạt, phục hồi và mở rộng theo nhu cầu cơ bản và chuyên biệt của doanh nghiệp.
Thông tin về Kubernetes (K8s) |
|
Thuộc tính | Giá trị |
Tác giả ban đầu | |
Nhà phát triển | Cloud Native Computing Foundation (CNCF) |
Phiên bản đầu tiên | 0.2/Ngày 9 tháng 9 năm 2014 |
Phiên bản ổn định mới nhất | 1.33.2/Ngày 18 tháng 6 năm 2025 |
Kho mã nguồn | github.com/kubernetes/kubernetes |
Ngôn ngữ lập trình | Go |
Loại phần mềm | Phần mềm quản lý cụm (Cluster management software) |
Giấy phép | Apache License 2.0 |
Website | kubernetes.io |
Các hệ thống cung cấp Kubernetes cài đặt sẵn | https://cloud.google.com/container-engine/ |
https://coreos.com/tectonic/ | |
https://www.openshift.com/ | |
Các sản phẩm dựa trên Kubernetes | https://www.openshift.org/ |
https://deis.com/paas/ | |
http://rancher.com/rancher/ | |
Download Kubernetes cho các HĐH Windows, Linux, Darwin và macOS | https://kubernetes.io/vi/releases/download/ |
Bảng 1.1: Bảng tổng hợp thông tin chi tiết về ứng dụng quản lý container: Kubernetes (K8s)
Các khái niệm phổ biến về Kubernetes | |
---|---|
Thuật ngữ | Khái niệm và vai trò |
Kiến trúc tổng thể | |
Cluster | Kubernetes Cluster (cụm Kubernetes) là một tập hợp các máy tính (nodes) hoạt động phối hợp để triển khai và quản lý ứng dụng container hóa. Cụm bao gồm một Master Node chịu trách nhiệm điều khiển, phân phối tài nguyên và giám sát, cùng với nhiều Worker Nodes trực tiếp chạy các ứng dụng.
Nhờ cơ chế tự động hóa triển khai, mở rộng quy mô và quản lý container, Cluster đảm bảo ứng dụng hoạt động ổn định, linh hoạt và dễ dàng thích ứng trên nhiều môi trường khác nhau, từ on-premise đến cloud-native infrastructure. |
Node | Node trong Kubernetes là một server vật lý hoặc máy ảo trong cụm (cluster), cung cấp tài nguyên tính toán như CPU và RAM để chạy các ứng dụng container hóa thông qua Pods. Mỗi Node được trang bị các thành phần cốt lõi như Kubelet (quản lý Pods và container), Container Runtime (thực thi container), và Kube-proxy (xử lý mạng), nhằm đảm bảo khả năng giao tiếp với control plane và duy trì hoạt động ổn định của các container. |
Master Node | Master Node (hay Nút chính) là máy chủ trung tâm chịu trách nhiệm quản lý và điều phối toàn bộ cụm (cluster) trong các hệ thống phân tán như Kubernetes.
Trong Kubernetes, Master Node đóng vai trò như “bộ não” của cụm, điều khiển control plane, giám sát các Worker Nodes, và duy trì trạng thái mong muốn (desired state) của hệ thống. |
Worker Node | Worker Node trong Kubernetes (hay Nút công nhân) là máy chủ vật lý hoặc máy ảo trong cụm, nơi các ứng dụng thực tế được chạy dưới dạng Pods. Mỗi Worker Node bao gồm ba thành phần chính: Container Runtime (ví dụ Docker) để thực thi container, Kubelet để giao tiếp với Master Node và quản lý Pods, cùng Kube-proxy để xử lý mạng và cân bằng tải, đảm bảo ứng dụng hoạt động ổn định và hiệu quả. |
Workloads & Đơn vị Triển khai | |
Image | Image là một gói thực thi độc lập, bất biến (immutable), chứa toàn bộ thành phần cần thiết để chạy ứng dụng, bao gồm mã nguồn, runtime, thư viện, cấu hình và dependencies.
Các Pods trong Kubernetes sử dụng container image này để khởi tạo và chạy containers, giúp ứng dụng hoạt động nhất quán, ổn định và có thể tái tạo trên mọi môi trường, từ máy tính cá nhân đến hạ tầng đám mây (cloud environment). |
Container | Container là đơn vị phần mềm nhẹ, độc lập, chứa toàn bộ thành phần cần thiết để chạy ứng dụng, bao gồm mã nguồn, thư viện, công cụ và tệp cấu hình, giúp ứng dụng vận hành nhất quán trên nhiều môi trường.
Là một nền tảng điều phối container mã nguồn mở (open-source container orchestration system), K8s sử dụng các container làm nền tảng để triển khai, quản lý, mở rộng và tự động hóa ứng dụng, mang lại tính linh hoạt và độ sẵn sàng cao cho hệ thống. |
Pod | Pod trong Kubernetes (K8s) là đơn vị triển khai nhỏ nhất (smallest deployable unit), có thể chứa một hoặc nhiều container cùng chạy trên một Node.
Các containers trong cùng một Pod chia sẻ tài nguyên hệ thống như bộ nhớ, mạng và lưu trữ, đồng thời sử dụng một địa chỉ IP chung, cho phép chúng giao tiếp hiệu quả qua localhost và hoạt động như một thực thể logic duy nhất. |
Đối tượng Quản lý & Tự động hóa | |
Deployment | Kubernetes Deployment là một tài nguyên khai báo (declarative resource) cho phép định nghĩa trạng thái mong muốn của ứng dụng, và K8s sẽ tự động quản lý quá trình triển khai, cập nhật và duy trì số lượng Pod replicas trên cụm.
Deployment hỗ trợ cập nhật linh hoạt (rolling updates), cho phép rollback khi có lỗi, đồng thời tự động thay thế các Pod hỏng để đảm bảo tính sẵn sàng cao cho ứng dụng. |
Service | Service là một lớp trừu tượng mạng (networking abstraction) cung cấp điểm truy cập ổn định (stable endpoint) cho các Pods, thông qua một địa chỉ IP và tên DNS duy nhất. Service hoạt động như cầu nối mạng, cho phép người dùng truy cập một nhóm Pod chạy cùng ứng dụng mà không cần quan tâm đến địa chỉ IP động của từng Pod, đồng thời cung cấp cân bằng tải (load balancing) để đảm bảo hiệu năng và tính sẵn sàng cao. |
Label | Label trong Kubernetes là một cặp khóa–giá trị (key–value pair) gắn vào các đối tượng như Pod, Node, Service để cung cấp metadata, hỗ trợ phân loại và tổ chức tài nguyên trong cụm.
Kubernetes K8s sử dụng labels kết hợp với selectors để lọc, truy vấn và nhóm đối tượng thành các tập hợp con, giúp người dùng thao tác hàng loạt, quản lý và điều phối tài nguyên một cách hiệu quả hơn. |
Namespace | Kubernetes Namespace (Không gian tên) là một cơ chế phân vùng logic (logical partition) trong cụm, cho phép nhóm và cô lập tài nguyên thành các “cụm ảo” (virtual clusters) để phục vụ nhiều người dùng, dự án hoặc môi trường (dev, staging, production) trên cùng một hạ tầng vật lý.
Namespace cung cấp phạm vi tên (naming scope), cho phép các tài nguyên có cùng tên nhưng tồn tại trong các namespace khác nhau mà không gây xung đột, đồng thời hỗ trợ tổ chức, quản lý và chia sẻ tài nguyên hiệu quả trong hệ thống. |
Các thành phần Cốt lõi & Công cụ | |
API Server | API Server trong Kubernetes (kube-apiserver) là thành phần trung tâm của Control Plane, đóng vai trò giao diện chính để người dùng, nhà phát triển và các thành phần nội bộ tương tác với hệ thống.
API Server cung cấp RESTful API để tiếp nhận yêu cầu, thực hiện xác thực, xử lý logic và cập nhật trạng thái tài nguyên trong cụm, bao gồm Pod, Service, Deployment và nhiều đối tượng khác |
Etcd | Etcd trong Kubernetes là một kho lưu trữ khóa–giá trị phân tán (distributed key–value store), đóng vai trò nguồn dữ liệu trung tâm để lưu trữ trạng thái, cấu hình và metadata của toàn bộ cụm.
Etcd đảm bảo tính nhất quán, độ bền và khả dụng cao bằng cách chạy trên một cụm node phân tán, cho phép các thành phần như API Server truy cập, theo dõi và quản lý hiệu quả tài nguyên trong hệ thống Kubernetes. |
Scheduler | Kubernetes Scheduler (Kube-scheduler) là thành phần thuộc Control Plane, chịu trách nhiệm lựa chọn và phân bổ Pods lên các Nodes phù hợp trong cụm. Nó đánh giá các yếu tố như yêu cầu tài nguyên (CPU, bộ nhớ), ràng buộc phần cứng, chính sách và tính tương thích, để xác định Node tối ưu. Sau đó, quyết định này được chuyển cho Kubelet trên Node đã chọn để khởi chạy Pod. |
Controller Manager | Controller Manager là một thành phần của Control Plane, hoạt động liên tục theo cơ chế vòng lặp điều khiển (control loop) để giám sát và điều chỉnh trạng thái hiện tại của cụm sao cho khớp với trạng thái mong muốn (desired state) được định nghĩa trong cấu hình khai báo.
Thành phần này hỗ trợ việc quản lý nhiều controllers chuyên biệt, mỗi controller đảm nhiệm một tác vụ cụ thể như duy trì số lượng Pod replicas, quản lý Nodes, tạo Service Accounts hoặc xử lý background jobs. |
Kubelet | Kubelet là một tác nhân nút (node agent) chạy trên mỗi Worker Node, chịu trách nhiệm giao tiếp với Control Plane và quản lý containers. Nhiệm vụ chính của Kubelet là nhận thông tin về Pods cần triển khai, khởi chạy và giám sát containers trên Node đó, đồng thời báo cáo trạng thái Pods và tài nguyên về cho Control Plane để đảm bảo hệ thống vận hành ổn định. |
Kubectl | Kubectl là một công cụ dòng lệnh (CLI) dùng để tương tác với cụm Kubernetes thông qua việc gửi lệnh quản lý, triển khai và giám sát các ứng dụng container hóa. Về bản chất, kubectl chính là giao diện người dùng của Kubernetes, dựa trên Kubernetes API để thực thi mọi thao tác trên cluster, từ tạo và cập nhật tài nguyên cho đến điều phối lưu lượng. |
Bảng 1.2: Tổng hợp các thuật ngữ phổ biến nhất trong Kubernetes
Kiến trúc Kubernetes (Kubernetes Architecture) bao gồm hai phần cốt lõi: Mặt phẳng điều khiển (Control Plane) và Nút làm việc (Worker Nodes). Control Plane chịu trách nhiệm quản lý, điều phối và duy trì trạng thái mong muốn của toàn bộ cụm (cluster), trong khi Worker Nodes là nơi các ứng dụng container được triển khai và vận hành thực tế.
Control Plane là trung tâm điều hành, đảm bảo hệ thống hoạt động ổn định và tuân thủ theo các cấu hình khai báo. Nó bao gồm nhiều thành phần hợp tác chặt chẽ:
Worker Nodes là nơi toàn bộ ứng dụng container thực sự chạy. Mỗi Node có thể là một máy ảo hoặc máy chủ vật lý, bên trong bao gồm các thành phần chính:
Ngoài Control Plane và Worker Nodes, Kubernetes còn có nhiều thành phần bổ sung để mở rộng khả năng quản lý và vận hành:
Giải pháp quản lý container Kubernetes bao gồm 10 chức năng chính:
Kubernetes (K8s) có thể công khai (expose) một container thông qua DNS hoặc địa chỉ IP nội bộ. Khi lưu lượng truy cập tăng cao, K8s tự động thực hiện cân bằng tải (load balancing) để phân phối lưu lượng giữa các Pod, đảm bảo hệ thống hoạt động ổn định và sẵn sàng.
Kubernetes (K8s) hỗ trợ tự động gắn kết nhiều loại hệ thống lưu trữ, từ ổ đĩa cục bộ (local storage), dịch vụ lưu trữ của các nhà cung cấp đám mây công cộng (AWS EBS, GCP Persistent Disk, Azure Disk), cho đến các giải pháp lưu trữ triển khai trên hạ tầng cloud server.
>> Xem thêm: Giá thuê server - Dịch vụ cho thuê máy chủ cloud siêu tốc tại FPT Cloud
Kubernetes (K8s) sẽ tự động điều phối và điều chỉnh trạng thái thực tế để khớp với trạng thái đó, với tốc độ và cơ chế cập nhật có thể kiểm soát được chỉ bằng việc khai báo trạng thái mong muốn của hệ thống.
Kubernetes sẽ tự động lập lịch (scheduling) và phân bổ container vào các node phù hợp, nhằm tối ưu hóa việc sử dụng tài nguyên của toàn bộ hệ thống bằng việc cung cấp cho Kubernetes (K8s) một cụm các node và định nghĩa yêu cầu tài nguyên như CPU và bộ nhớ (RAM) cho từng container.
Kubernetes có khả năng tự động khởi động lại các container gặp sự cố, thay thế container khi cần, loại bỏ những container không phản hồi và chỉ phân phối (expose) các container ở trạng thái sẵn sàng đến client.
Kubernetes cho phép lưu trữ và quản lý các thông tin nhạy cảm như mật khẩu, token OAuth hay khóa SSH dưới dạng Secrets. Bạn có thể triển khai hoặc cập nhật dữ liệu nhạy cảm và cấu hình ứng dụng mà không cần rebuild lại container image, đồng thời tránh làm lộ thông tin trong cấu hình hệ thống (stack configuration).
Ngoài các chức năng cốt lõi, Kubernetes còn hỗ trợ quản lý các tác vụ xử lý theo lô (batch jobs) và quy trình CI/CD (Continuous Integration/Continuous Deployment), đồng thời có khả năng thay thế các container gặp sự cố khi cần thiết để đảm bảo hệ thống ổn định.
Kubernetes (K8s) cho phép mở rộng hoặc thu hẹp số lượng container một cách linh hoạt thông qua dòng lệnh (kubectl), giao diện người dùng (UI), hoặc tự động dựa trên mức sử dụng tài nguyên như CPU và RAM (Horizontal Pod Autoscaler).
K8s cấp phát địa chỉ IPv4, IPv6 cho Pod và Service.
Thêm các tính năng vào Kubernetes Cluster mà không cần thay đổi mã nguồn gốc (upstream).
Cách thức hoạt động của Kubernetes (K8s) dựa trên một cụm máy chủ (cluster) nhằm tự động hóa toàn bộ quá trình quản lý ứng dụng container. K8s sử dụng bộ lập lịch (scheduler) để phân bổ container vào các nút làm việc (worker nodes), giúp tối ưu tài nguyên hệ thống. Đồng thời, nó liên tục giám sát trạng thái ứng dụng, tự động khởi động lại hoặc thay thế container khi có sự cố, đảm bảo tính sẵn sàng cao. Kubernetes cũng hỗ trợ mở rộng quy mô linh hoạt theo nhu cầu (scaling) và quản lý mạng ổn định, từ đó loại bỏ các thao tác thủ công phức tạp trong triển khai và vận hành.
K8s đặc biệt hữu ích trong các trường hợp sau:
Có một số tình huống doanh nghiệp nên cân nhắc trước khi triển khai:
FPT Kubernetes Engine (FKE) là dịch vụ tối ưu hóa triển khai ứng dụng Cloud Native toàn diện được tích hợp các thành phần: Container Orchestration, Storage, Networking, Security và PaaS giúp doanh nghiệp dễ dàng triển khai, quản lý và mở rộng các ứng dụng container hóa trên hạ tầng đám mây bằng công nghệ cloud computing. Với FKE, khách hàng có thể tập trung vào phát triển ứng dụng thay vì phải lo lắng về vận hành, nâng cấp hay bảo mật cụm Kubernetes.
Lợi thế nổi bật của FPT Kubernetes Engine:
Các tình huống ứng dụng của FPT Kubernetes Engine:
Để nhận được tư vấn và báo giá chính xác về dịch vụ Kubernetes Engine của FPT Cloud (FKE) doanh nghiệp có thể liên hệ với chúng tôi tại đây! Thêm vào đó, doanh nghiệp còn được nhận bộ tài liệu chi tiết về Managed - FPT Kubernetes Engine và Dedicated - FPT Kubernetes Engine khi đăng ký service.
FPT Kubernetes Engine with GPU (FKE-GPU) là dịch vụ cung cấp nền tảng Container Orchestrator dựa trên Kubernetes tích hợp với card xử lý đồ họa Nvidia (A30, A100) cùng công nghệGPU sharing (Multi-Instance GPU/ Multi-Process Service) giúp tối ưu hóa tài nguyên và chi phí sử dụng GPU nhưng vẫn đảm bảo hiệu năng cao.
Những điểm nổi bật của FKE-GPU:
Các tình huống ứng dụng thực tế của FKE-GPU:
Nếu doanh nghiệp đang quan tâm đến nền tảng Kubernetes tích hợp với GPU thì có thể liên hệ FPT Cloud, để được tư vấn, tài liệu K8s GPU và nhận báo giá chi tiết về dịch vụ Kubernetes Engine GPU.