Chương 1: Giới thiệu tổng quan về đề tài của Khóa luận. - Chương 2: Trình bày cơ sở lý thuyết và kiến thức nền tang liên quan đến đề tài. - Chương 3: Trình bay các phương pháp thực hiện. - Chương 4: Trình bày thực nghiệm và đánh giá.
- Chương 5: Kết luận và hướng phát triển của đề tài. CƠ SỞ LÝ THUYET Chương này trình bày cơ sở lý thuyết của nghiên cứu về Kubernetes, Mi- croservices, Cilium và các lý thuyết liên quan khác 2. Giới thiệu vé Kubernetes Kubernetes, thường được gọi tắt là k8s, là một phần mềm mã nguồn mở có khả năng tự động hóa quy trình triển khai, quản lý và điều phối các ứng dụng chạy trên container. Được thiết kế để hỗ trợ các ứng dụng quy mô lớn và phức tạp, Kubernetes giúp đơn giản hóa việc quản lý các tiến trình đa dạng trong một môi trường phân tán.
Một trong những điểm mạnh của Kubernetes là khả năng cho phép các nhà phát triển triển khai và quản lý ứng dụng mà không cần phải quan tâm đến các chi tiết cơ sở hạ tầng phức tạp bên dưới. Nó cung cấp một framework mạnh mẽ để tự động hóa các quy trình triển khai, mở rộng quy mô và quản lý ứng dụng container trong các cluster máy chủ. Với Kubernetes, người dùng có thể dễ dàng triển khai và quản lý ứng dụng trên nhiều loại môi trường khác nhau, bao gồm cả hạ tầng phần cứng truyền thống, các trung tâm dit liệu, và các dịch vụ đám mây công cộng như Amazon Web Services (AWS), Microsoft Azure va Google Cloud Platform (GCP). Kubernetes cung cấp một loạt các tính năng quan trọng giúp tối ưu hóa và đơn giản hóa quá trình quản lý container.
Đầu tiên, tính năng tự động cân bằng tải (load balancing) giúp phân phối tải công việc một cách hiệu quả giữa các container, đảm bảo hiệu suất hệ thống được tối ưu. Thứ hai, khả năng tự phục hồi (self-healing) cho phép Kubernetes tự động khởi động lại các container khi chúng gặp sự cố, đảm bảo tính liên tục của dịch vụ. Ngoài ra, Kubernetes cũng hỗ trợ việc tự động thay đổi quy mô (scaling), cho phép tăng hoặc giảm số lượng container dựa trên nhu cầu thực tế, và khả năng cập nhật tuần tự (rolling updates) giúp triển khai các bản cập nhật mà không làm gián đoạn dịch vụ. Kubernetes cung cấp các công cụ mạnh mẽ dé quản lý hạ tầng container, bao gồm hệ thống mang (networking), lưu trữ (storage), bảo mat (security) và ghi log (logging).
Diều này giúp người dùng dễ dàng giám sát và điều chỉnh hoạt động của các ứng dụng theo thời gian thực. Một điểm đáng chú ý là Kubernetes không bị giới hạn ở một loại công nghệ container cụ thể. Nó hỗ trợ nhiều công nghệ container khác nhau như Docker, containerd và nhiều công nghệ khác. Sự linh hoạt này giúp Kubernetes dễ dàng tích hợp vào nhiều hệ thống hiện có và hỗ trợ đa dạng các yêu cầu triển khai.
Kubernetes có một hệ sinh thái phong phú và dang phát triển mạnh mẽ. N6 bao gồm nhiều công cụ và tiện ích bổ sung mở rộng khả năng của Kubernetes. Ví dụ, Istio là một công cụ quản lý service mesh giúp quản lý giao tiếp giữa các dịch vụ vi mô (microservices), trong khi Prometheus là một hệ thống giám sát mạnh mẽ cho phép theo dõi và cảnh báo dựa trên các chỉ số hệ thống và ứng dụng. Kubernetes áp dụng cách tiếp cận khai báo (declarative), trong đó người dùng mô tả trạng thái mong muốn của ứng dụng và hệ thống trong các tệp cấu hình YAML Ain’t Markup Language (YAML).
Kubernetes sau đó sẽ sử dụng những khai báo này để tự động triển khai và quản lý hệ thống theo yêu cầu. Điều này giúp giảm thiểu công việc thủ công và đảm bảo rằng hệ thống luôn ở trạng thái mong muốn, ngay cả khi có sự cố xảy ra. Kiến trúc của Kubernetes Kiến trúc của Kubernetes bao gồm nhiều thành phần hoạt động cùng nhau với nhiệm vụ quản lý các ứng dụng container. Dưới đây là các thành phần chính ĩ của Kubernetes Hình 2.1: Kiến trúc của Kubernetes.
Í - Master Node: Là phần chịu trách nhiệm điều khiển toàn bộ hoạt động của cụm Kubernetes - Worker Node: Dây là nơi các ứng dụng container được triển khai. Nó chịu trách nhiệm chạy các ứng dụng container và cung cấp các tài nguyên cần thiết như CPU, bộ nhớ, và mạng. - etcd: Day là một cơ sở dữ liệu sử dụng để lưu giữ trạng thái và các tài nguyên của cluster. - API server: Thành phần chính để giao tiếp với các thành phần khác của Kubernetes.
- Controller manager: Bao gồm nhiều controller, mỗi container thực hiện chức năng cụ thể cho từng tài nguyên trong Kubernetes, chang hạn như tao pod hoặc tạo deployment. - Scheduler (kube-scheduler): Chạy trên node master, kube-scheduler có nhiệm vụ sử dụng thông tin về tài nguyên của các thành phần trong hệ thống để triển khai và chạy các ứng dụng trên các node thích hợp, đảm bảo tính ổn định của Ihttps://bizflycloud.vn/tin-tuc/tong-quan-ve-kien-truc-k8s- htm hệ thống. - kubelet: Day là dịch vụ luôn chạy trên tất cả các worker node, với nhiệm vụ quản lý các container. Nó giám sát, chạy hoặc dừng các container và duy trì các ứng dụng chạy trên node để đảm bảo sự ổn định của container.
Ngoài ra, kubelet cũng đảm bảo việc giao tiếp với node master để chắc chắn rằng các container hoạt động như mong đợi. - Kubernetes Proxy (kube-proxy): Kubernetes proxy quản lý lưu lượng mạng giữa các dich vụ khác nhau đang chạy trên cluster. Nó định tuyến lưu lượng đến các dịch vụ thích hợp và thực hiện cân bằng tải để đảm bảo lưu lượng được phân phối đồng đều trên các node hiện có. - Pod: Là đơn vị cơ bản nhất để triển khai và chạy một ứng dụng, được tạo và quản lý bởi Kubernetes.
Pod gộp và chạy một hoặc nhiều container cùng nhau trên cùng một worker node, chia sẻ tài nguyên chung. Minikube (9) minikube Hinh 2.2: Minikube Trong Khóa luận này, tôi đã sử dụng công cu Minikube dé xây dựng một cum Kubernetes đơn giản bao gồm một master node và một worker node nhằm thực hiện triển khai ứng dụng Microservice lên đấy. Minikube có cho Linux, macOS, và Windows. Minikube CLI, một bộ công cụ dòng lệnh, cung cấp khả năng điều khiển cluster cho người sử dụng, như chạy, dừng chạy, xem trang thái, hoặc xóa một thành phần trong cluster.
M6 hình Microservice Kiến trúc Microservice là một cách tiếp cận trong việc xây dựng các ứng dụng bằng cách chia nhỏ các dịch vụ thành các phần riêng lẻ, hoạt động độc lập và phối hợp với nhau để tạo thành một hệ thống lớn hơn. Mỗi dịch vụ trong kiến trúc này đảm nhận một hoặc vài chức năng cụ thể và thường giao tiếp với các dich vụ khác thông qua các giao thức linh hoạt, thường là qua các lời gọi API. Kiến trúc Microservice khác biệt so với kiến trúc Monolithic (nguyên khối), phương pháp truyền thống trong đó tất cả các dịch vụ của ứng dụng được gói gon trong một mã nguồn duy nhất. Việc thay đổi hoặc sửa một phần của ứng dụng Monolithic có thé ảnh hưởng đến toàn bộ hệ thống, gây khó khăn trong việc mở rộng, triển khai và bảo trì.
Ngược lại, do các dịch vụ trong ứng dụng Microservice được chia nhỏ, kiến trúc này cho phép triển khai độc lập, mở rộng quy mô và bảo trì dễ dàng và hiệu quả hơn. Một số tính năng chính của kiến trúc Microservice bao gồm: - Tính độc lập và tự chủ của dich vụ: Mỗi dich vụ trong kiến trúc Microservice được thiết kế để hoạt động độc lập và tách biệt, với mã nguồn, cơ sở dữ liệu và dữ liệu riêng. Điều này mang lại sự linh hoạt trong việc phát triển và triển khai, vì các dịch vụ có thể được cập nhật và thay đổi mà không ảnh hưởng đến các dịch vụ khác. - Quản lý phi tập trung: Không giống như kiến trúc Monolithie, nơi một nhóm duy nhất chịu trách nhiệm cho toàn bộ ứng dụng, kiến trúc Microservice cho phép mỗi dịch vụ được phát triển và quản lý bởi các nhóm riêng biệt.
Điều này thúc đẩy sự linh hoạt và đổi mới, vì các nhóm có thể làm việc độc lập và triển khai các tính năng mới nhanh chóng. - Tính linh hoạt và khả năng mở rộng: Kiến trúc Mieroservices cung cấp khả năng linh hoạt và mở rộng cao hơn, vì mỗi dịch vụ có thể được triển khai và mở rộng độc lập. Điều này cho phép các tổ chức mở rộng quy mô ứng dụng theo chiều ngang bằng cách thêm nhiều phiên bản của các dịch vụ cụ thể, thay vì 10 phải mở rộng toàn bộ ứng dụng. - Kha năng phục hồi và chịu lỗi: Kiến trúc Microservices cải thiện khả năng phục hồi và khả năng chịu lỗi của ứng dụng, vì mỗi dịch vụ có thể được thiết kế để xử lý lỗi một cách độc lập.
Nếu một dịch vụ gặp sự cố, các dịch vụ khác vẫn có thể tiếp tục hoạt động bình thường, giảm thiểu rủi ro gián đoạn toàn bộ hệ thống 2. Ứng dụng web dựa trên kiến trúc Microservices Ứng dụng web (Web app) là chương trình phần mềm chạy trên nền tảng web và được truy cập thông qua trình duyệt web. các ứng dụng này thường được lưu trự tại các máy chủ từ xa. Máy chủ này xử lý các yêu cầu từ trình duyệt của người dùng, thực hiện các tác vụ cần thiết và gửi lại dữ liệu hoặc trang web đã được cập nhật.
Các tính năng phổ biến nhất trên trang web như giỏ hàng, tìm kiếm và lọc sản phẩm, nhắn tin tức thì và bảng tin trên mạng xã hội đều là các ứng dụng web về mặt thiết kế. Nhờ ứng dụng web, ta có thể truy cập vào chức năng phức tạp mà không cần cài đặt hay cấu hình phần mềm. Các thành phần của một ứng dụng web thường bao gồm - Máy chủ web: hiển thị giao diện của ứng dụng web và tiếp nhận các yêu cầu từ máy khách - Máy chủ ứng dụng: xử lý các yêu cầu từ máy khách và trả về kết quả - Database: nơi lưu trữ dữ liệu của ứng dụng web Da số các ứng dụng sử dụng các công nghệ như HTML, CSS và Javascript để lập trình cho phía giao diện người dùng (client-side). Lập trình phía máy chủ ứng dụng (server-side) thường sử dụng các ngôn ngữ như Python, Java hay Golang để xây dựng các tập lệnh xử lý yêu cầu Ngày nay, các hệ thống ứng dụng web ngày càng phát triển mạnh mẽ với nhiều nội dung và chức năng phức tạp đáp ứng nhu cầu người dùng.
Với sự gia tăng của các hệ thống phụ và các ứng dụng web, tầm quan trọng về tính ổn 11 định, bảo mật và tin cậy của chúng ngày càng trở nên đáng kể.