ERDQ-LEARNING: MÔ HÌNH HỌC TĂNG CƯỜNG TÍCH HỢP HPA PHÂN CHIA TỶ LỆ POD SERVERLESS TRONG KUBERNETES
hue-hujos-tt-7972.pdf · Phiên bản 1 · 21 trang
jos.hueuni.edu.vn Tập 134, Số 2A, 2025 145 trong môi trường phân tán. Trong hệ sinh thái Kubernetes, Pod là đơn vị triển khai cơ bản nhất, chứa một hoặc nhiều container hoạt động cùng nhau và chia sẻ tài nguyên hệ thống. Mỗi Pod đại diện cho một phiên bản ứng dụng đang chạy trong cụm, là đơn vị mà Kubernetes dùng để thực hiện các chức năng như mở rộng, phục hồi và cân bằng tải. Mô hình serverless triển khai trên Kubernetes bản chất là quá trình tự động hóa triển khai và điều chỉnh quy mô của các hàm chức năng (function), được hiện thực hóa thông qua kiến trúc FaaS (Function-as-a-Service), tức là mỗi hàm được đóng gói thành một container và triển khai dưới dạng một Pod độc lập trong cụm Kubernetes (chúng tôi gọi là FaaP (Function-as-a-Pod), kết hợp với các cơ chế autoscaler và thành phần điều phối sự kiện, định tuyến [5] [6]. Cách tiếp cận này tận dụng hệ sinh thái phong phú của Kubernetes để hiện thực hóa tính năng serverless trong môi trường container hóa linh hoạt và kiểm soát được. Auto-scaling là một kỹ thuật trong điện toán đám mây và quản lý tài nguyên, được hiểu là quá trình tự động phân chia tỉ lệ tài nguyên (như máy chủ, container hoặc Pod) của hệ thống để đáp ứng nhu cầu thực tế của ứng dụng hoặc dịch vụ. Mục tiêu chính của auto-scaling là đảm bảo hệ thống đáp ứng tốt với các thay đổi về tải và tối ưu hóa việc sử dụng tài nguyên nhằm giảm chi phí vận hành. Auto-scaling là một thành phần quan trọng trong các kiến trúc hiện đại như microservices, containerization và serverless computing. Kubernetes Autoscaler là một thành
phần quan trọng trong hệ sinh thái Kubernetes, giúp tự động phân chia tỉ lệ hoặc thu nhỏ các tài nguyên như pod, node để tối ưu hóa hiệu suất và chi phí vận hành. Đây là một cơ chế cốt lõi để đảm bảo rằng các ứng dụng container hóa trong Kubernetes có thể đáp ứng tải biến động mà không cần can thiệp thủ công. Horizontal Pod Autoscaler (HPA) là một cơ chế phân chia tỉ lệ ngang trong Kubernetes, cho phép tự động điều chỉnh số lượng Pod của một workload (ví dụ: Deployment, ReplicaSet, hoặc StatefulSet) dựa trên các chỉ số quan sát được (observed metrics), như được chỉ ra trong Hình 1 [8]. Thuật toán HPA hoạt động như một vòng lặp điều khiển (control loop), nhằm duy trì hiệu suất ứng dụng ổn định trước sự thay đổi của tải hệ thống, đồng thời tối ưu hóa việc sử dụng tài nguyên [7]. Dựa trên các chỉ số quan sát được từ hệ thống, cơ chế chia tỷ lệ sẽ tính toán số lượng Pod mong muốn 𝑑desired(𝑡) bằng cách áp dụng giải thuật HPA theo phương trình [7-8]: 𝑑desired(𝑡) = [𝑑on(𝑡) 𝜌̅ (𝑡) 𝜌target ] (1) Trong mỗi vòng lặp điều khiển, HPA sử dụng dữ liệu đầu vào bao gồm mức sử dụng CPU trung bình 𝜌̅ (𝑡), số Pod hiện tại 𝑑on(𝑡) cùng với ngưỡng mục tiêu 𝜌target , để xác định giá trị 𝑑desired(𝑡). Sau đó, thuật toán áp dụng hàm ràng buộc để giới hạn số Pod trong khoảng từ 𝑀 (số Pod được đặt trước tổi thiểu) đến 𝐿 (số Pod tối đa của hệ thống), kết quả thu được số lượng Pod mong muốn được khởi tạo. Giá trị 𝑑desired(𝑡) sẽ được so sánh với trạng thái hiện tại để quyết định việc phân chia tỉ lệ (scale out/scale in) số lượng Pod. Mặc định, vòng điều khiển này thực thi mỗi