Nắm vững kiến trúc của Kubernetes để triển khai hiệu quả

Thu Nhung
Chia sẻ Zalo

KInhtedothi - Kiến trúc của Kubernetes hay K8s cluster bao gồm nhiều node, mỗi node sẽ chạy một kubelet. Một node sẽ làm chủ (master) của cluster đó, node này sẽ được cài đặt API server, scheduler...

 Các node còn lại hay còn gọi là worker/slave node có vai trò chạy kubelet để tạo ra các container. Nhìn chung, Kubernetes bao gồm 3 thành tố chính là Master Node, Worker hay Slave Node và các Addons. Dưới đây là những mô tả chi tiết về các thành phần này:
Master Node

Master Node được xem như “đầu não” trong kiến trúc của Kubernetes, có vai trò quản lý, điều phối toàn bộ các hoạt động của các node khác và các containers trong cụm Kubernetes. Trong một cluster có thể có nhiều Master Node cùng tồn tại để giúp tăng khả năng xử lý lỗi, sự cố, giúp cụm kubernetes có tính sẵn sàng cao hơn. Master node bao gồm các thành phần chính sau:
 
- Kubernetes API Server: là thành phần cung cấp RESTful APIs cho các thành phần khác trong cluster và giúp chúng liên lạc được với nhau. Nhờ các APIs này, bạn có thể lấy thông tin về một resource trong cụm, theo dõi sự thay đổi của nó hay tạo ra một resource mới. Kubernetes API Server lưu thông tin của các đối tượng trong cluster vào etcd.

- Etcd là cơ sở dữ liệu trong kiến trúc của Kubernetes, mọi thông tin của cụm Kubernetes (như số lượng pod, trạng thái của pod, namespace...) đều được lưu trữ tại đây. Etcd là một hệ thống phân tán, mã nguồn mở, ngoài để lưu trữ, nó còn giúp cập nhật, nhân bản các data của Kubernetes.

- Scheduler có vai trò lên lịch triển khai cho các pod trên các node khác nhau. Dựa trên yêu cầu sử dụng tài nguyên của từng ứng dụng, Scheduler sẽ tiến hành lên lịch cho các nhóm của ứng dụng đó trên node có tài nguyên phù hợp nhất. Scheduler phải biết rõ tổng số tài nguyên có sẵn, cũng như tài nguyên được phân bố hiện có trên mỗi máy chủ nhằm giám sát việc sử dụng tài nguyên trên mỗi máy. Việc này để đảm bảo rằng hệ thống sẽ không bị quá tải.

- Controller Manager (kube controller manager) là thành phần quản lý các tác vụ liên quan đến Node Controller, Endpoints Controller, Replication Controller, Service Account... Controller manager theo dõi các hoạt động và sự thay đổi thông qua API Server.

- Cloud controller manager là thành phần tích hợp với Cloud provider, cho phép truy vấn thông tin hoặc sử dụng các tài nguyên của Cloud provider phục vụ cho hoạt động của cluster, ví dụ như thông tin về địa chỉ ip của các worker node, Load Balancer, ....

Worker/Slave Node

Thành phần chính thứ hai trong kiến trúc của Kubernetes là Worker Node. Nó là server chạy các ứng dụng được điều khiển bởi Master node. Worker Node được thiết lập để chạy trên tất cả các nút của cụm Kubernetes, có nhiệm vụ quản lý và thông báo tình trạng của các Pods cho node chính (Master). Slave Node bao gồm các thành phần chính sau:

- Kubelet là service chính trên node, có vai trò quản lý và báo cáo hoạt động của từng node cho API Server (thành phần của Master Node). Ngoài ra, nó còn có trách nhiệm quản lý các container được tạo bởi Kubernetes và đảm bảo rằng các pod, cũng như các container vẫn hoạt động ở trạng thái mong muốn.

- Kubernetes Service Proxy là thành phần có vai trò phân tải giữa các ứng dụng, giúp routing giữa pods và service. Service proxy này chạy trên mỗi Worker Node để xử lý vấn đề về mạng trên các node đó.

- Container Runtime là thành phần đảm nhận việc chạy các ứng dụng dưới dạng Container. Một số Container Runtime được Kubernetes hỗ trợ như: Docker, containerd, rkt, … trong đó Docker được sử dụng phổ biến nhất.

Các Addons

Thành phần còn lại trong kiến trúc của Kubernetes là Addons hay chính là các pods và service giúp thực hiện các chức năng của cluster như DNS Server, Container Resource Monitoring, Cluster-level Logging…

Các khái niệm quan trọng trong kiến trúc của Kubernetes

Pod

Pod là khái niệm quan trọng trong kiến trúc của Kubernetes, nó là một nhóm các container thực hiện một chức năng nào đó, và là nơi để ứng dụng hoạt động. Nhóm container này nằm chung trên một server và có thể chia sẻ không gian lưu trữ, địa chỉ IP và các tài nguyên khác với nhau.
 
Service (svc)

Service là một thành phần trừu tượng trong kiến trúc của kubernetes, bao gồm một nhóm các pod và các cách để connect tới nhóm pod này. Thông qua label, selector, service có thể xác định các pod nào trong nhóm liên kết với nó. Vai trò của service là giúp các pod tương tác với nhau ổn định hơn, hay để thực hiện cân bằng tải (Load Balancing) giữa nhiều bản sao của Pod, hoặc dùng để dẫn lưu lượng truy cập từ người dùng vào ứng dụng…

Namespaces

Đây là một thành phần có vai trò nhóm lại hoặc tách các nhóm đối tượng, chẳng hạn như phân chia các service với các user, hay cô lập các service với nhau. Namespaces còn được dùng để kiểm soát các truy cập network, quản lý resource và quoting. Trong kiến trúc của Kubernetes mặc định sẽ có 3 namespace là default, kube system và kube public, bên cạnh đó bạn có thể tạo ra các namespace khác tùy ý muốn.

Volume

Khi deploy các ứng dụng trên kubernetes, các service trong lúc hoạt động có thể phát sinh các thay đổi về dữ liệu. Chắc bạn cũng hiểu rằng ta không nên lưu dữ liệu trên container mà phải lưu vào một nơi nào đó an toàn hơn. Bởi khi container bị xóa mất thì dữ liệu cũng có thể bị mất mát theo. Chính vì thế, bạn có thể mount vào trong container volume chứa data đó. Nếu container bị xóa đi và tạo lại, volume sẽ được mount vào container và bạn có thể tiếp tục sử dụng các dữ liệu cũ.

Controller

Trong kiến trúc của Kubernetes, controllers là những vòng lặp điều khiển có vai trò giám sát tình trạng, trạng thái của mỗi cụm. Sau đó, các bộ controllers này sẽ tạo ra yêu cầu thay đổi nếu cần thiết. Mỗi controller luôn cố thực hiện việc giám sát và thay đổi nhằm giúp hệ thống đạt được những trạng thái mong muốn.

Một số bộ controllers ta thường sử dụng như Deployments, StatefulSets, Jobs, Garbage Collection, ReplicaSet, CronJob, DaemonSet, Replication Controller, Ingress Controller…

Để hỗ trợ người dùng Việt Nam sử dụng Kubernetes dễ dàng và thuận tiện nhất có thể, BizFly Cloud đã phát triển Kubernetes Engine - giải pháp triển khai Kubernetes hoàn toàn tự động, xây dựng hạ tầng container cho ứng dụng chỉ với vài click chuột, và đặc biệt hơn: Không cần công sức vận hành.

Liên hệ để được tư vấn giải pháp trực tiếp tại: (024) 7302 8888 / (028) 7302 8888

Tin đọc nhiều

Kinh tế đô thị cuối tuần