Monday, January 20, 2025

[Kubernetes 6] Horizontal Pod Autoscaler kết hợp với ReplicaSet

-

Horizontal Pod Autoscaler là chế độ tự động scale (nhân bản POD) dựa vào mức độ hoạt động của CPU đối với POD, nếu một POD quá tải – nó có thể nhân bản thêm POD khác và ngược lại – số nhân bản dao động trong khoảng min, max cấu hình.

Ví dụ, với ReplicaSet rsapp trên đang thực hiện nhân bản có định 3 POD (replicas), nếu muốn có thể tạo ra một HPA để tự động scale (tăng giảm POD) theo mức độ đang làm việc CPU, có thể dùng lệnh dưới, với rs-prometheus là 1 replicaSet.

root@k8s-standalone:/home# kubectl autoscale rs rs-prometheus --max=2 --min=1
horizontalpodautoscaler.autoscaling/rs-prometheus autoscaled

Lệnh trên tạo ra một hpa có tên rs-prometheus, có dùng tham chiếu đến replicaSet có tên rs-prometheus để scale các POD với thiết lập min, max các POD

Để liệt kê các hpa gõ lệnh

root@k8s-standalone:/home# kubectl get hpa
NAME            REFERENCE                  TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
rs-prometheus   ReplicaSet/rs-prometheus   <unknown>/80%   1         2         2          71s

Để xóa hpa rs-prometheus sử dụng lệnh

root@k8s-standalone:/home# kubectl delete hpa/rs-prometheus
horizontalpodautoscaler.autoscaling "rs-prometheus" deleted

Để linh loạt và quy chuẩn, nên tạo ra HPA (HorizontalPodAutoscaler) từ cấu hình file yaml, ví dụ như dưới, hpa sẽ hực hiện scale CPU hoạt động ở 50% so với CPU mà POD yêu cầu.

cat > ./prometheus_hpa.yaml << OEF
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: rs-prometheus-scaler
spec:
  scaleTargetRef:
    apiVersion: apps/v1
    kind: ReplicaSet
    name: rs-prometheus
  minReplicas: 5
  maxReplicas: 10
  # 
  targetCPUUtilizationPercentage: 50
OEF

Thực hiện lệnh để triển khai

root@k8s-standalone:/home# kubectl apply -f /home/prometheus_hpa.yaml 
horizontalpodautoscaler.autoscaling/rs-prometheus-scaler created

Thực hiện kiểm tra lại hpa ta có kết quả

root@k8s-standalone:/home# kubectl get hpa
NAME                   REFERENCE                  TARGETS         MINPODS   MAXPODS   REPLICAS   AGE
rs-prometheus-scaler   ReplicaSet/rs-prometheus   <unknown>/50%   5         10        0          13s

Mặc dù có thể sử dụng ReplicaSet một cách độc lập, tuy nhiên trong triển khai hiện nay hay dùng Deployment, với Deployment nó sở hữu một ReplicaSet riêng. Bài tiếp theo sẽ nói về Deployment

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories