Quay lại danh sách
Tin tức công nghệ

Chiến lược Green DevOps: Cấu hình KEDA để tự động tắt bớt Node VPS khi thấp điểm

1 tháng 6, 2026

Giới thiệu về Green DevOps và Thách thức Lãng phí Tài nguyên

Trong kỷ nguyên số hóa phát triển vượt bậc, hạ tầng đám mây (Cloud Infrastructure) và các cụm máy chủ ảo (VPS/Cloud Server) đã trở thành xương sống của mọi hệ thống phần mềm doanh nghiệp. Tuy nhiên, sự tiện lợi này đi kèm với một cái giá không nhỏ về cả tài chính lẫn môi trường. Xu hướng Green DevOps (DevOps Xanh) ra đời như một giải pháp tất yếu, hướng tới việc tối ưu hóa hiệu suất tiêu thụ năng lượng và giảm thiểu lượng khí thải carbon phát sinh từ các trung tâm dữ liệu.

Một trong những nguyên nhân lớn nhất gây lãng phí trong vận hành hạ tầng là hiện tượng "Over-provisioning" (cấp phát dư thừa tài nguyên). Hệ thống thường được cấu hình để chịu tải cho những thời điểm đỉnh điểm (Peak hours), nhưng lại giữ nguyên mức tài nguyên đó vào ban đêm hoặc các khung giờ thấp điểm (Off-peak hours). Điều này đồng nghĩa với việc doanh nghiệp đang trả tiền cho lượng điện năng và năng lượng tính toán của những VPS chạy không tải (Idle Nodes). Bài viết này sẽ hướng dẫn bạn cách áp dụng chiến lược Green DevOps cụ thể: Cấu hình KEDA (Kubernetes Event-driven Autoscaling) để tự động tắt bớt Node khi thấp điểm, giúp doanh nghiệp vừa tiết kiệm ngân sách vừa bảo vệ môi trường.

KEDA là gì? Tại sao KEDA tối ưu hơn Autoscaler truyền thống?

KEDA, hay Kubernetes Event-driven Autoscaling, là một thành phần mở rộng (Add-on) cho Kubernetes, giúp đơn giản hóa việc tự động mở rộng quy mô ứng dụng dựa trên các sự kiện (Event-driven). Đối với Kubernetes truyền thống, Horizontal Pod Autoscaler (HPA) mặc định chỉ dựa vào các chỉ số phần cứng cơ bản như CPU và Memory để quyết định tăng hay giảm số lượng Pod. Tuy nhiên, phương pháp này có một số hạn chế lớn:

  • Phản ứng chậm: CPU/Memory tăng lên là hệ quả sau khi lượng truy cập đã đổ vào, dẫn đến độ trễ trong việc scale-out.
  • Không linh hoạt: HPA không thể tự động nhận biết các sự kiện từ bên ngoài như số lượng message trong hàng đợi (RabbitMQ, Kafka), số lượng request thực tế (Prometheus metrics), hay thậm chí là yếu tố thời gian (Cron time).

KEDA giải quyết triệt để vấn đề này bằng cách kết nối trực tiếp với hơn 60 nguồn dữ liệu/sự kiện khác nhau (Scalers). Trong chiến lược Green DevOps, chúng ta có thể sử dụng KEDA Cron Scaler hoặc Prometheus Scaler để chủ động dự đoán và hạ tải hệ thống xuống mức tối thiểu vào giờ thấp điểm, từ đó kích hoạt cơ chế Cluster Autoscaler để tắt bớt các Node VPS không cần thiết.

Cơ chế hoạt động: Từ Scale-Down Pod đến Tắt Node VPS

Để đạt được mục tiêu tắt bớt Node VPS vật lý hoặc ảo hóa, quy trình tự động hóa sẽ diễn ra theo cơ chế chuỗi (Cascading) bao gồm các bước sau:

  1. KEDA kích hoạt Scale-Down Pod: Dựa trên lịch trình thời gian được cấu hình sẵn (ví dụ: từ 0h00 đến 5h00 sáng), KEDA gửi tín hiệu scale-down số lượng bản sao (Replicas) của các ứng dụng trong cụm Kubernetes về mức tối thiểu (thậm chí có thể về 0 đối với các workload không thiết yếu).
  2. Giải phóng tài nguyên trên Node: Khi các Pod bị hủy bỏ, lượng tài nguyên CPU và RAM đã được đặt trước (Requests/Limits) trên các Node VPS sẽ được giải phóng hoàn toàn.
  3. Cluster Autoscaler vào cuộc: Thành phần Cluster Autoscaler (được tích hợp với nhà cung cấp Cloud/VPS như AWS, GCP, Azure hoặc các hạ tầng On-premise hỗ trợ API) sẽ phát hiện ra các Node đang ở trạng thái trống hoặc sử dụng dưới mức ngưỡng quy định (Under-utilized).
  4. Tắt Node VPS: Cluster Autoscaler tiến hành sơ tán các Pod còn lại sang Node khác (Eviction) và ra lệnh tắt/xóa bớt các Node VPS thừa để tiết kiệm chi phí. Khi đến giờ cao điểm, quy trình ngược lại sẽ được kích hoạt để bật lại Node.
Cơ chế này đảm bảo rằng doanh nghiệp chỉ chi trả chính xác cho lượng tài nguyên tính toán thực tế cần thiết tại mỗi thời điểm trong ngày, giảm tối đa dấu chân carbon của hệ thống.

Hướng dẫn cấu hình chi tiết KEDA Cron Scaler áp dụng Green DevOps

Dưới đây là các bước chi tiết để cấu hình một tài nguyên ScaledObject trong KEDA, sử dụng bộ kích hoạt theo thời gian (Cron) nhằm mục đích chủ động giảm tải hệ thống vào ban đêm.

Bước 1: Cài đặt KEDA vào cụm Kubernetes

Trước tiên, bạn cần cài đặt KEDA thông qua Helm Chart bằng các lệnh sau:

helm repo add kedacore https://kedacore.github.io/charts
helm repo update
kubectl create namespace keda
helm install keda kedacore/keda --namespace keda

Bước 2: Triển khai file cấu hình ScaledObject

Giả sử bạn có một ứng dụng Deployment tên là web-app-service. Bạn muốn ứng dụng này duy trì từ 5 đến 20 Pod vào ban ngày, nhưng vào ban đêm (từ 23h00 đến 5h00 sáng hôm sau), hệ thống sẽ tự động hạ xuống tối thiểu 1 Pod để giải phóng không gian Node. Hãy tạo file keda-cron-scaler.yaml với nội dung sau:

apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: web-app-cron-scaler
  namespace: default
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: web-app-service
  minReplicaCount: 5
  maxReplicaCount: 20
  triggers:
  - type: cron
    metadata:
      timezone: Asia/Ho_Chi_Minh
      start: 0 23 * * *
      end: 0 5 * * *
      desiredReplicas: "1"

Bước 3: Áp dụng cấu hình và theo dõi

Triển khai cấu hình lên cụm bằng lệnh:

kubectl apply -f keda-cron-scaler.yaml

Khi đến 23h00, KEDA sẽ ghi đè cấu hình và hạ số lượng Pod của web-app-service xuống còn 1. Nếu bạn đã cấu hình Cluster Autoscaler cho nhóm Node VPS (Node Group/Auto Scaling Group), hệ thống sẽ tự động nhận diện các Node trống và tiến hành tắt bớt Node sau khoảng 10-15 phút theo dõi.

Các lưu ý quan trọng để đảm bảo tính sẵn sàng cao (High Availability)

Mặc dù việc tắt bớt Node VPS mang lại lợi ích lớn về chi phí và triết lý Green DevOps, các kỹ sư hệ thống cần lưu ý những nguyên tắc sau để tránh làm gián đoạn dịch vụ của khách hàng:

  • Cấu hình PodDisruptionBudget (PDB): Luôn đảm bảo có PDB cho các ứng dụng quan trọng nhằm giới hạn số lượng Pod có thể bị tắt đồng thời trong quá trình Cluster Autoscaler di tản Pod.
  • Thiết lập Graceful Shutdown: Ứng dụng cần được cấu hình để xử lý tín hiệu SIGTERM một cách mượt mà, hoàn thành các request hiện tại trước khi Pod hoàn toàn bị hủy.
  • Tính toán thời gian khởi động của VPS: Việc bật lại một Node VPS từ trạng thái tắt có thể mất từ 2 đến 5 phút. Do đó, hãy đặt cấu hình Cron của KEDA chạy sớm hơn thời điểm cao điểm thực tế khoảng 15-30 phút để cụm có đủ thời gian chuẩn bị sẵn sàng năng lực xử lý.

Kết luận

Áp dụng chiến lược Green DevOps không chỉ là việc thực hiện trách nhiệm xã hội của doanh nghiệp đối với môi trường mà còn đem lại lợi ích kinh tế trực tiếp và rõ ràng thông qua việc tối ưu hóa hóa đơn hạ tầng đám mây. Việc kết hợp linh hoạt giữa năng lực mở rộng theo sự kiện của KEDA và tính năng co giãn hạ tầng của Cluster Autoscaler chính là chìa khóa giúp hệ thống vận hành thông minh, tự động hóa cao và bền vững trong tương lai.

Chiến lược Green DevOps: Cấu hình KEDA để tự động tắt bớt Node VPS khi thấp điểm | DPTCloud