Kiến trúc Kubernetes là gì? Tìm hiểu tổng quan và các thành phần chính

Kubernetes là một nền tảng mã nguồn mở được xây dựng nhằm tự động hóa quá trình triển khai, mở rộng và quản lý các ứng dụng được chứa trong container. Hệ thống này tổ chức các container thuộc cùng một ứng dụng thành những đơn vị logic, giúp việc quản lý và định vị trở nên dễ dàng hơn. Việc nắm vững kiến trúc của Kubernetes (K8S Architecture) là điều thiết yếu đối với bất kỳ ai đang làm việc với nền tảng này.

Khi hiểu rõ cách các thành phần trong một cụm Kubernetes phối hợp và tương tác với nhau, bạn sẽ có cái nhìn sâu sắc hơn về cách hệ thống vận hành và ứng dụng được triển khai trên đó. Trong bài viết này, hãy cùng Sunteco tìm hiểu chi tiết về kiến trúc Kubernetes là gì và cách các thành phần trong hệ thống kết nối để đảm bảo hiệu quả và tính ổn định trong môi trường sản xuất.

Kiến trúc Kubernetes

KIẾN TRÚC KUBERNETES

Kiến trúc Kubernetes cơ bản

Thành phần chính của kiến trúc Kubernetes

Kubernetes là một hệ thống phân tán cho phép mở rộng container theo chiều ngang trên nhiều máy chủ vật lý (hay còn gọi là Node). Điều này tạo ra các triển khai có khả năng chịu lỗi, thích ứng với các điều kiện như áp lực tài nguyên Node, tình trạng bất ổn định và lưu lượng truy cập bên ngoài tăng cao. Nếu một Node bị gián đoạn, Kubernetes có thể sắp xếp lại container của bạn sang các Node lân cận đang hoạt động bình thường.

Hệ thống cung cấp chức năng tự động mở rộng, tự động thay đổi số lượng bản sao triển khai khi tải tăng. Các dịch vụ Kubernetes được quản lý như Google GKE, Amazon EKS, Sunteco Kubernetes Service (K8S) cũng hỗ trợ tạo Node động. Điều này giúp bạn vượt qua các đợt tăng đột biến lưu lượng bằng cách tự động tăng dung lượng cụm mà không cần can thiệp thủ công.

Tất cả những chức năng này đồng nghĩa với việc kiến ​​trúc Kubernetes tương đối phức tạp. Hãy cùng Sunteco tìm hiểu về kiến trúc Kubernetes:

Workloads

1. Pod

Pod là đơn vị tính toán cơ bản và nhỏ nhất trong Kubernetes. Pod là 1 nhóm (1 trở lên) các container thực hiện một mục đích nào đó, như là chạy software.Tất cả các container trong Pod được lên lịch đến cùng một máy chủ. Nhóm này chia sẻ không gian lưu trữ, địa chỉ IP với nhau. Pod thì được tạo ra hoặc xóa tùy thuộc vào yêu cầu của dự án. Nếu k8s chỉ có mỗi khái niệm pod, thì dùng k8s giống như dùng docker bình thường. Tức muốn thêm tính năng gì thì ta phải tự kiến trúc/ thiết kế/ thực hiện. Các thông tin bạn cần về pod, nằm trong output của lệnh : describe pod PODNAME
Sơ đồ bên dưới cho thấy kiến ​​trúc của một Pod:

2. Deployment
Deployment bao bọc đối tượng ReplicaSet cấp thấp hơn. Nó đảm bảo một số lượng bản sao nhất định của Pod sẽ chạy trong cụm của bạn. Deployment cũng cung cấp các bản cập nhật khai báo cho Pod; bạn mô tả trạng thái mong muốn và Deployment sẽ tự động thêm, thay thế và xóa Pod để đạt được trạng thái đó.

3. Service
Các dịch vụ phơi bày Pods như một dịch vụ mạng. Bạn sử dụng các dịch vụ để cho phép truy cập vào Pods, trong cụm của bạn thông qua khám phá dịch vụ tự động hoặc bên ngoài thông qua Ingress .
4. Job

Một Job khởi động một hoặc nhiều Pod và chờ chúng kết thúc thành công. Kubernetes cũng cung cấp CronJob để tự động tạo Jobs theo lịch trình định kỳ.
5. DaemonSets và StatefulSets
Các loại khối lượng công việc khác bao gồm DaemonSets và StatefulSets. DaemonSets sao chép một Pod vào mọi Node trong cụm của bạn, trong khi StatefulSets cung cấp danh tính bản sao cố định.

Có thể bạn quan tâm: 5 Lỗi Phổ biến khi cài đặt Kubernetes và cách khắc phục

Kubernetes control plane components (Các thành phần của mặt phẳng điều khiển Kubernetes)

Mặt phẳng điều khiển Kubernetes là bộ phận trung tâm quản lý toàn bộ cụm. Nó lưu trữ trạng thái của cụm, theo dõi các thay đổi xảy ra và thực hiện các hành động cần thiết — ví dụ như khi người dùng gửi yêu cầu qua API hoặc khi một node gặp sự cố như thiếu bộ nhớ.

Khi bạn triển khai cụm Kubernetes, mặt phẳng điều khiển sẽ được tạo tự động. Thông thường, nó chạy trên một node riêng biệt để đảm bảo hiệu suất và bảo mật, tránh bị ảnh hưởng bởi các ứng dụng khác. Tuy nhiên, không bắt buộc phải tách biệt — node chạy mặt phẳng điều khiển vẫn có thể dùng để chạy ứng dụng nếu cần.

Thuật ngữ “mặt phẳng điều khiển” thực ra là cách gọi chung cho nhiều thành phần phối hợp với nhau. Chúng đảm nhiệm toàn bộ việc giám sát và điều phối cụm, nhưng không trực tiếp chạy container. Việc đó thuộc về phần mềm ở cấp node, chúng ta sẽ tìm hiểu trong phần tiếp theo.

1. Máy chủ API (kube-api server)
Máy chủ API là thành phần mặt phẳng điều khiển hiển thị Kubernetes REST API. Bạn sử dụng API này bất cứ khi nào bạn chạy lệnh với Kubectl . Bạn sẽ mất quyền truy cập quản lý vào cụm của mình khi máy chủ API bị lỗi, nhưng khối lượng công việc của bạn không nhất thiết bị ảnh hưởng.

2. Trình quản lý bộ điều khiển (kube-controller-manager)
Phần lớn Kubernetes được xây dựng dựa trên mẫu bộ điều khiển . Bộ điều khiển là một vòng lặp liên tục giám sát cụm của bạn và thực hiện các hành động khi một số sự kiện nhất định xảy ra. Ví dụ, bộ điều khiển Triển khai sẽ khởi chạy các Pod mới khi bạn tạo đối tượng Triển khai.

Trình quản lý bộ điều khiển giám sát tất cả các bộ điều khiển trong cụm của bạn. Nó khởi động các quy trình của chúng và đảm bảo chúng hoạt động trong khi cụm của bạn đang chạy.

3. Trình lập lịch (kube-scheduler)
Bộ lập lịch có trách nhiệm đặt các Pod mới tạo vào các Node trong cụm của bạn. Quy trình lập lịch hoạt động bằng cách đầu tiên lọc ra các Node không thể lưu trữ Pod, sau đó chấm điểm từng Node đủ điều kiện để xác định vị trí phù hợp nhất.

Các nút có thể bị lọc ra do CPU hoặc bộ nhớ không đủ, không đáp ứng được các quy tắc về mối quan hệ của Pod hoặc các yếu tố khác như bị cô lập để bảo trì. Quy trình chấm điểm sẽ ưu tiên các Pod đáp ứng các điều kiện không bắt buộc như mối quan hệ ưa thích . Nếu một số Node có vẻ phù hợp như nhau, Kubernetes sẽ cố gắng phân bổ đều các Pod của bạn trên các Pod đó.

4. Etcd
Etcd là hệ thống lưu trữ khóa-giá trị phân tán. Kubernetes lưu trữ trạng thái cụm của bạn trong etcd. Vai trò chính của etcd là giữ mọi đối tượng API, bao gồm các giá trị cấu hình và dữ liệu nhạy cảm mà bạn lưu trữ trong ConfigMaps và Secrets .

Etcd là thành phần mặt phẳng điều khiển quan trọng nhất về bảo mật. Việc xâm nhập thành công sẽ cho phép truy cập đầy đủ vào dữ liệu Kubernetes của bạn. Điều quan trọng là etcd cũng nhận được đủ tài nguyên phần cứng, vì bất kỳ sự thiếu hụt nào cũng có thể ảnh hưởng đến hiệu suất và tính ổn định của toàn bộ cụm của bạn.

5. Cloud Controller Manager (Trình quản lý bộ điều khiển đám mây)

Cloud Controller Manager tích hợp Kubernetes với nền tảng của nhà cung cấp dịch vụ đám mây của bạn. Nó tạo điều kiện thuận lợi cho các tương tác giữa cụm của bạn và môi trường bên ngoài. Thành phần này được sử dụng bất cứ khi nào các đối tượng Kubernetes thay đổi tài khoản đám mây của bạn, chẳng hạn như bằng cách cung cấp bộ cân bằng tải, thêm khối lưu trữ khối hoặc tạo máy ảo để hoạt động như một Node.

Có thể bạn quan tâm: Sun Kubernetes Service – Tăng tốc triển khai ứng dụng AI/ML

Các thành phần node nút Kubernetes

Node là máy vật lý hoặc máy ảo lưu trữ Pod trong cụm của bạn. Mặc dù có thể chạy cụm với một Node duy nhất, nhưng môi trường sản xuất nên bao gồm nhiều Node để bạn có thể mở rộng tài nguyên theo chiều ngang và đạt được tính khả dụng cao.

Các nút tham gia cụm bằng mã thông báo do mặt phẳng điều khiển phát hành. Khi một nút được chấp nhận, mặt phẳng điều khiển bắt đầu lên lịch các Pod mới cho nút đó. Mỗi nút chạy một số thành phần phần mềm để khởi động các container và duy trì giao tiếp với mặt phẳng điều khiển.

Sơ đồ dưới đây cho thấy kiến ​​trúc của một node:

KIẾN TRÚC K8S
1. Kubelet
Kubelet là quy trình cấp Node hoạt động như tác nhân của mặt phẳng điều khiển. Nó kiểm tra định kỳ với mặt phẳng điều khiển để báo cáo trạng thái khối lượng công việc của Node. Mặt phẳng điều khiển có thể liên hệ với Kubelet khi muốn lên lịch cho một Pod mới trên Node.

Kubelet cũng chịu trách nhiệm chạy các container Pod. Nó kéo các hình ảnh cần thiết theo các Pod mới được lên lịch và khởi động các container để tạo ra trạng thái mong muốn. Khi các container được khởi động, Kubelet sẽ theo dõi chúng để đảm bảo chúng vẫn hoạt động tốt.

2. Kube-Proxy
Thành phần kube-proxy tạo điều kiện thuận lợi cho giao tiếp mạng giữa các Node trong cụm của bạn. Nó tự động áp dụng và duy trì các quy tắc mạng để các Pod được Dịch vụ tiếp xúc có thể tiếp cận được với nhau. Nếu kube-proxy không thành công, các Pod trên Node đó sẽ không thể tiếp cận được qua mạng.

3. Thời gian chạy của container
Mỗi Node đều yêu cầu thời gian chạy tương thích với CRI để có thể khởi động vùng chứa của bạn.

Containerd runtime là tùy chọn phổ biến nhất, nhưng cũng có thể sử dụng các lựa chọn thay thế như CRI-O và Docker Engine . Runtime sử dụng các tính năng của hệ điều hành như cgroups để đạt được container hóa.

Điểm yếu của kiến trúc Kubernetes

Kiến trúc Kubernetes yêu cầu các thành phần của control plane (bộ điều khiển) phải luôn hoạt động liên tục. Mặc dù hệ thống có khả năng chịu lỗi tốt khi các Node (nút) gặp sự cố, nhưng nếu control plane xảy ra vấn đề, toàn bộ hệ thống sẽ bị ảnh hưởng. Vai trò trung tâm của control plane khiến nó trở thành một điểm yếu tiềm tàng trong kiến trúc.

Để giảm thiểu rủi ro này, bạn có thể chạy nhiều bản sao (replicas) của mỗi thành phần trong control plane. Điều này tạo ra một control plane có tính sẵn sàng cao (high availability), được phân phối trên nhiều Node, tương tự như cách các Pod hoạt động. Việc thiết lập này tốn thời gian hơn nhưng mang lại độ an toàn cao hơn cho các cụm Kubernetes trong môi trường sản xuất. Nếu bạn sử dụng dịch vụ Kubernetes được quản lý (managed Kubernetes), hãy kiểm tra với nhà cung cấp để xem liệu họ có cung cấp tùy chọn control plane có tính sẵn sàng cao hay không.

SKS – Giải pháp “3 trong 1”: Đơn giản triển khai – Dễ dàng vận hành – Tối ưu chi phí

Nhằm đáp ứng nhu cầu ngày càng tăng của các doanh nghiệp trong việc triển khai Kubernetes, Sunteco mang đến dịch vụ Sun Kubernetes Service (SKS).

SKS được phát triển dựa trên nền tảng mã nguồn mở Kubernetes, là giải pháp phù hợp cho cả người mới bắt đầu lẫn các chuyên gia DevOps. Dịch vụ giúp doanh nghiệp tự động hóa toàn bộ quy trình triển khai, mở rộng và quản lý ứng dụng container mà không cần đầu tư quá nhiều thời gian cho việc vận hành hạ tầng.
Thay vì phải loay hoay với việc thiết lập cluster, cấu hình mạng hay xử lý các vấn đề bảo mật ở từng lớp, đội ngũ DevOps có thể tập trung vào công việc cốt lõi: phát triển, tối ưu và đưa sản phẩm ra thị trường nhanh chóng hơn. SKS mang đến một nền tảng hiện đại, đơn giản hóa vận hành nhưng vẫn đảm bảo hiệu suất, tính linh hoạt và an toàn cho hệ thống.
SKS cũng đáp ứng đầy đủ các tiêu chuẩn pháp lý, bảo mật nghiêm ngặt: An toàn thông tin cấp độ 3 và tuân thủ Nghị định 53/2022/NĐ-CP về lưu trữ dữ liệu trong lãnh thổ Việt Nam. Đây là điểm cộng lớn cho các doanh nghiệp hoạt động trong lĩnh vực tài chính, y tế, chính phủ, hoặc cung cấp dịch vụ công.
Khác với mô hình thuê máy chủ truyền thống, SKS áp dụng hình thức thanh toán linh hoạt theo mức sử dụng thực tế (pay-as-you-go), cho phép doanh nghiệp chỉ chi trả đúng phần tài nguyên đã dùng – bao gồm CPU (vCPU), RAM và dung lượng lưu trữ (Persistent Volume). Nhờ khả năng tự động co giãn tài nguyên theo lưu lượng truy cập, doanh nghiệp luôn đảm bảo hiệu suất ổn định trong mùa cao điểm (như Black Friday, Tết…) mà vẫn giảm thiểu lãng phí khi lưu lượng giảm.
Dịch vụ SKS được vận hành trên hạ tầng Tier III, Rated 3 theo chuẩn quốc tế TIA-942, đảm bảo độ ổn định, an toàn và khả năng mở rộng linh hoạt cho mọi quy mô doanh nghiệp. Ngoài ra, SKS hỗ trợ băng thông miễn phí ở mức cơ bản và chỉ tính phí khi vượt ngưỡng – giúp các startup và nhóm phát triển nhỏ dễ dàng bắt đầu hành trình với Kubernetes mà không lo chi phí ban đầu.k8

Sunteco mang đến cơ hội vàng cho các doanh nghiệp muốn trải nghiệm nền tảng Sun Kubernetes Service với chương trình khuyến mãi hấp dẫn 50 khách hàng đầu tiên sẽ được dùng thử hoàn toàn miễn phí trong 14 ngày. Liên hệ ngay để khám phá giải pháp từ Sunteco. Website: https://sunteco.vn. Hotline: (+84) 78 678 3868. Để đăng ký dùng thử SKS, khách hàng có thể đăng ký tại đây: https://dashboard.sunteco.vn/

Bạn cần chuyên gia tư vấn giải pháp Cloud phù hợp?

Vui lòng để lại thông tin, chúng tôi sẽ liên hệ với bạn trong thời gian sớm nhất!