Tầm quan trọng của Autoscaling trong Kubernetes
Khi chạy ứng dụng trên Kubernetes, bạn luôn phải đối mặt với khối lượng tải thay đổi liên tục.
Khi lưu lượng truy cập tăng, bạn cần đủ pod để xử lý yêu cầu. Khi traffic giảm, bạn nên scale down các pod không cần thiết để tiết kiệm chi phí.
Nếu quản lý việc này thủ công, bạn sẽ phải theo dõi liên tục và điều chỉnh thường xuyên, rất tốn thời gian. Vì vậy, tự động autoscaling là giải pháp hiệu quả hơn.
Kubernetes có sẵn công cụ Horizontal Pod Autoscaler (HPA), nhưng nó vẫn có một số hạn chế.
Đối với các hệ thống event-driven, message queues, hoặc workload ít hoạt động trong thời gian dài, KEDA sẽ cung cấp nhiều khả năng mở rộng và kiểm soát linh hoạt hơn.
Trong bài viết này, bạn sẽ tìm hiểu:
Mỗi công cụ hoạt động như thế nào
Chúng khác nhau ở điểm gì
Khi nào nên dùng công cụ nào
HPA là gì?
Horizontal Pod Autoscaler (HPA) là công cụ autoscaling mặc định trong Kubernetes.
Nó theo dõi mức sử dụng tài nguyên, chủ yếu là:
CPU
Memory
Sau đó tự động điều chỉnh số lượng pod dựa trên các ngưỡng bạn đã cấu hình.
Ví dụ:
Nếu pod sử dụng hơn 80% CPU trong một khoảng thời gian, HPA sẽ tự động tạo thêm replicas.
Khi mức sử dụng giảm, nó sẽ giảm số lượng pod xuống.
HPA dễ thiết lập và hoạt động tốt với những workload ổn định và dễ dự đoán, như:
Web services
API services
Trong các trường hợp này, CPU hoặc memory usage thường phản ánh trực tiếp lưu lượng truy cập thực tế.
KEDA là gì?
KEDA mở rộng khả năng của Kubernetes để hỗ trợ event-driven autoscaling.
Khác với Horizontal Pod Autoscaler (HPA) chỉ theo dõi CPU hoặc memory, KEDA có thể scale dựa trên các trigger bên ngoài, ví dụ:
Độ dài của queue
Số lượng message đang chờ xử lý
Custom metrics từ các hệ thống khác
KEDA tích hợp với nhiều nền tảng phổ biến như:
Apache Kafka
RabbitMQ
Ví dụ:
Nếu queue có nhiều message đang chờ, KEDA sẽ tự động tạo thêm consumer pod để xử lý.
Khi queue trống, KEDA có thể scale xuống 0 pod, giúp tiết kiệm tài nguyên và chi phí.
Chính vì vậy, KEDA rất phù hợp với các workload không chạy liên tục, mà chỉ kích hoạt khi có sự kiện xảy ra.
So sánh KEDA và HPA trong Kubernetes
Phần tiếp theo sẽ so sánh KEDA và Horizontal Pod Autoscaler để giúp bạn hiểu khi nào nên dùng công cụ nào.
KEDA không phải là công cụ thay thế Horizontal Pod Autoscaler (HPA). Thay vào đó, nó mở rộng khả năng của HPA.
KEDA thực chất sử dụng HPA ở phía dưới (under the hood) để quản lý số lượng replica, nhưng cung cấp cho HPA dữ liệu sự kiện tùy chỉnh để quyết định khi nào cần scale.
Khi nào nên dùng HPA và khi nào nên dùng KEDA?
Một nguyên tắc đơn giản:
Sử dụng HPA khi:
Workload của ứng dụng thay đổi theo CPU hoặc memory usage
Ứng dụng luôn cần hoạt động liên tục (ví dụ: web services hoặc APIs)
Sử dụng KEDA khi:
Workload phụ thuộc vào events hoặc messages
Ứng dụng xử lý queue, triggers hoặc scheduled jobs
Bạn muốn hệ thống phản ứng nhanh với sự kiện mới
Bạn muốn scale xuống 0 pod để tiết kiệm tài nguyên và chi phí
KEDA đặc biệt hữu ích cho các hệ thống sử dụng queue như RabbitMQ hoặc Apache Kafka, nơi các worker chỉ cần chạy khi có dữ liệu mới.
Trong nhiều cluster thực tế, cả hai công cụ thường được dùng cùng nhau:
HPA xử lý web services hoặc API
KEDA xử lý background workers hoặc queue consumers chỉ kích hoạt khi có công việc mới
Kết luận
Trong bài viết hôm nay, bạn đã tìm hiểu về HPA và KEDA.
Cả hai đều xử lý việc autoscaling, nhưng giải quyết những bài toán khác nhau:
HPA scale dựa trên resource metrics (CPU, memory)
KEDA scale dựa trên events
Nếu dùng KEDA cho ứng dụng đơn giản, bạn có thể tạo thêm độ phức tạp không cần thiết. Ngược lại, nếu chỉ dùng HPA cho workload event-driven, hệ thống có thể scale chậm và phản ứng kém với nhu cầu thực tế.
Trong bài viết tiếp theo, chúng ta sẽ xem một ví dụ thực tế: kết nối RabbitMQ với KEDA để tự động scale queue consumers.
Hy vọng bài viết này giúp bạn hiểu rõ sự khác biệt giữa KEDA và HPA.
Cảm ơn bạn đã đọc và hẹn gặp lại ở bài viết tiếp theo!




















