Kubernetes Architecture là gì? Những dụng của Kubernetes Architecture trong thực tế

1566
27-02-2024
Kubernetes Architecture là gì? Những dụng của Kubernetes Architecture trong thực tế

Kubernetes Architecture là gì?

Cụm Kubernetes (K8s) là một hình thức triển khai của Kubernetes Architecture. Kiến trúc cơ bản của Kubernetes bao gồm mặt phẳng điều khiển và các nút hoặc máy tính. Các nút có thể là máy chủ vật lý hoặc máy chủ ảo, chúng chạy trên môi trường Linux riêng và mỗi nút sẽ thực hiện các nhóm bao gồm các vùng chứa khác nhau.

Các thành phần của Kubernetes Architecture hay còn được gọi là thành phần K8, bao gồm mặt phẳng điều khiển Kubernetes và các nút trong cụm. Các thành phần của mặt phẳng điều khiển bao gồm máy chủ API Kubernetes, bộ lập lịch Kubernetes, trình quản lý bộ điều khiển Kubernetes, và nhiều thành phần khác. Các thành phần của nút Kubernetes bao gồm công cụ chạy container hoặc docker, dịch vụ Kubelet và dịch vụ proxy Kubernetes.

Các thành phần của Kubernetes Architecture

1. Kubernetes master: là trung tâm điều khiển có nhiệm vụ quản lý, lên kế hoạch, lập lịch cũng như theo dõi các node. Có thể hiểu một cách đơn giản hơn, Kubernetes master giống như bộ não của con người.

2. Image Registry: Chính là nơi quản lý các images của ứng dụng.

3. Nodes: Là máy ảo hoặc máy chủ vật lý lưu trữ các ứng dụng trong vùng chứa. Mỗi nodes trong một cụm có thể thực hiện các lệnh chạy một hoặc nhiều phiên bản ứng dụng khác nhau. Một cụm Kubernetes điển hình thường sẽ có một nodes.

4. API: UI, CLI sẽ thực hiện các tương tác qua api để điều phối các hoạt động tương ứng

5. Image Registry: Hình ảnh vùng chứa được lưu giữ và được chuyển đến các nodes bằng mặt phẳng điều khiển.

6. Pods: Trong một cụm Kubernetes, Pods là tài nguyên cấp thấp nhất. Một pods thường được tạo thành từ một hoặc nhiều container.

7. Kubernetes cluster: Có nhiệm vụ kết nối và điều phối các máy tính trong một cluster để chúng hoạt động như một đơn vị thống nhất. 

Sơ đồ thành phần của Kubernetes Architecture

Sơ đồ thành phần của Kubernetes Architecture

Kubernetes Control Plane gồm những gì?

Control Plane là một hệ thống có tác dụng duy trì bản ghi của tất cả các đối tượng Kubernetes. Control Plane gồm có 3 thành phần chính: kube-apiserver, kube-controller-manager và kube-scheduler. Tất cả đều có thể chạy trên một master node hoặc có thể được replicated qua nhiều master node.

1. Kube-apiserver: Là trung tâm truyền thông của Kubernetes, nơi giao tiếp bên ngoài thông qua các dòng lệnh CLI hoặc UI cũng như các thiết bị điều khiển đều phải đi qua kube-apiserver.

2. Etcd: Là nơi lưu trữ tất cả các dữ liệu liên quan đến cụm Kubernetes, cụm etcd có tính sẵn sàng cao bởi mọt quyền truy cập đều thông qua máy chủ API. Thông tin trong etcd thường được định dạng bằng YAML giúp người dùng có thể dễ dàng đọc được chúng.

3. Kube-scheduler: Có nhiệm vụ chỉ định Pod mới và gán nó cho một nút để thực thi các yêu cầu và tài nguyên, chính sách và các thông số kỹ thuật liên quan đến sự kiện, vị trí địa lý,...

4. Kube-controller-manager: Có khả năng biên dịch tất cả các chứng năng điều khiển của cụm Kubernetes thành một tệp nhị phân duy nhất.

Kubernetes Control Plane gồm những gì?

Control plane có nhiệm vụ quản lý các trạng thái objects, phản hồi lại các thay đổi trong cluster

Trong quá trình này, các chức năng điều khiển bao gồm:

1. Replication controller: Nhiệm vụ của bộ điều khiển sao chép chính là đảm bảo tồn tại số lượng nhóm chính xác cho các nhóm đang chạy trong cụm.

2. Node controller: Thực hiện theo dõi từng nút sau đó thông báo cho cụm tình trạng của các nút.

3. Endpoints controller: Là cầu nối giữa Pod và Services để đưa ra kết quả và điền vào điểm cuối.

4. Service Account and Token controllers: Nhiệm vụ của nó là thực hiện các phân bổ mã thông báo truy cập API và thực hiện thêm các tài khoản mặc định cho không gian mới trong cụm.

5. Cloud-controller-manager: Liên kết cụm với API của nhà cung cấp đám mây và chỉ chạy theo điều kiện dành riêng cho nhà cung cấp đám mây đưa ra. Như vậy, nó có thể chạy trong một cụm để thực hiện việc khắc phục lỗi hoặc thực hiện nhiệm vụ cải thiện hiệu suất tổng thể của đám mây.

Thành phần của trình quản lý bộ điều khiển đám mây bao gồm:

1. Node controller: Có vai trò xác định trạng thái của nút dựa trên tình hình thực tế đám mây phản hồi để đưa ra kết quả rằng nút đó có bị xóa hay không.

2. Route controller: Thực hiện thiết lập các đường dẫn trong cơ sở hạ tầng của nhà cung cấp đám mây.

3. Service controller: Nhiệm vụ quản lý bộ cân bằng tải của nhà cung cấp đám mây.

Thành phần của kubernetes Node architecture 

Dưới đây là các thành phần chính của nút:

1. Kubelet: Có nhiệm vụ đảm bảo rằng vùng chứa được mô tả trong PodSpecs đang hoạt động bình thường. 

2. Kube-proxy: Mạng Proxy trên mỗi nút duy trì cho phép liên lạc từ Pod đến các phiên mạng khác dù ở bên trong hay bên ngoài cụm.

4. Container runtime: Là phần mềm chịu trách nhiệm chạy các ứng dụng được chứa trong container. 

5. Cụm etcd: Là bộ lưu trữ giá trị khóa phân tán được sử dụng để lưu trữ dữ liệu cụm Kubernetes Kube-apiserver: Có nhiệm vụ quản lý trung tâm, nhận tất cả các yêu cầu sửa đổi REST đối dịch vụ và các yêu cầu khác.

6. Kube-controller-manager: Chạy một số quy trình điều khiển riêng biệt để điều chỉnh trạng thái cũng như thực hiện những nhiệm vụ đơn giản.

7. Cloud-controller-manager: Có trách nhiệm quản lý các quy trình của bộ điều khiển.

8. Kube-scheduler: Có nhiệm vụ lên lịch cho các nhóm.

Những thành phần nào của website sử dụng Kubernetes Architecture 

Kubernetes quản lý các thùng chứa của ứng dụng cũng như dữ liệu đính kèm của cụm. Người dùng Kubernetes có thể yêu cầu tài nguyên lưu trữ mà không cần biết chi tiết về cơ sở hạ tầng lưu trữ cơ bản.

Ổ đĩa Kubernetes là một thư mục mà một nhóm có thể truy cập và chứa dữ liệu. Nội dung, hình thức và phương tiện hỗ trợ của tập được xác định bởi loại tập. Kubernetes dựa vào hình ảnh vùng chứa mà nó lưu trữ, có thể là đăng ký của bên thứ ba hoặc đăng ký do cấu hình tổ chức.

Các cụm ảo bên trong một cụm vật lý được sử dụng nhằm mục đích cung cấp môi trường làm việc tách biệt cho người dùng, ngăn các nhóm cản trở lẫn nhau bằng cách giới hạn đối tượng Kubernetes.

Ở cấp độ nhóm, các thùng chứa Kubernetes trong nhóm có thể tiếp cận các cổng khác thông qua localhost và chia sẻ địa chỉ IP cũng như không gian tên mạng của chúng.

Ứng dụng của Kubernetes Architecture

Kubernetes Architecture dựa trên tính sẵn có, tính di động, khả năng mở rộng và độ bảo mật, việc ứng dụng nó giúp cho khối lượng công việc trên các tài nguyên sẵn có được phân phối hiệu quả hơn từ đó tối ưu hóa chi phí cơ sở hạ tầng.

Tính sẵn sàng cao: Đảm bảo tính sẵn sàng cao cho các ứng dụng bằng cách sử dụng bộ điều khiển sao chép, bản sao. Kubernetes có thể tích hợp với các dịch vụ đám mây công cộng như AWS, Google Cloud và Azure, giúp người dùng triển khai ứng dụng của họ trên nhiều môi trường đám mây một cách dễ dàng.

Khả năng mở rộng: Các ứng dụng được triển khai trong Kubernetes là các dịch vụ vi mô , bao gồm nhiều vùng chứa được nhóm thành chuỗi dưới dạng nhóm. Mỗi container được thiết kế để thực hiện một nhiệm vụ duy nhất.

Tính linh hoạt: Kubernetes được thiết kế để cung cấp sự lựa chọn về nền tảng đám mây, thời gian chạy container, hệ điều hành, kiến trúc bộ xử lý và PaaS nên có thể thực hiện chạy trên các nền tảng đám mây và trong môi trường ảo hóa.

Cấu trúc bảo mật của Kubernetes Architecture

Để bảo mật các cụm, nút và vùng chứa Kubernetes dưới đây là một số phương pháp và nguyên tắc về cấu trúc bảo mật của Kubernetes Architecture:

1. Luôn cập nhật Kubernetes lên phiên bản mới nhất: Chỉ có ba phiên bản Kubernetes mới nhất được hỗ trợ các bản vá bảo mật cho các lỗ hổng mới.

2. Định cấu hình máy chủ API Kubernetes một cách an toàn: Vô hiệu hóa quyền truy cập ẩn danh, truy cập không được xác thực và sử dụng mã hóa TLS cho các kết nối giữa máy chủ API và kubelets.

3. Bảo mật etcd: Chỉ thực hiện các phục vụ kết nối máy khách qua TLS.

4. Bảo vệ kubelet: Cũng giống như định hình máy chủ API, bảo vệ kubelet cần vô hiệu hóa quyền truy cập ẩn danh sau đó khởi động kubelet bằng –anonymous-auth=false.

5. Sử dụng các biện pháp kiểm soát bảo mật gốc Kubernetes: Khi có thể, hãy tận dụng các biện pháp kiểm soát Kubernetes gốc để thực thi các chính sách bảo mật.

SHARE