kubernetes雲平臺管理實戰:HPA水平自動伸縮

Kubernetes平臺上應用的自動化橫着擴展(水平自動伸縮)是通過HPA(Horizontal Pod Autoscaler)來實現的,基於觀測CPU使用率(v1版本,v2beta版本也支持memory或者其他自定義性能屬性),當業務負載上升超過HPA設定值,創建新的POD保障業務對資源的需求,當負載下載後可以通過銷燬POD是否資源來提高利用率。

HPA控制器的工作流程(V1版本)


流程

創建HPA資源對象,關聯對應資源例如Deployment,設定目標CPU使用率閾值,最大,最小replica數量。

前提:pod一定要設置資源限制,參數request,HPA纔會工作。

HPA控制器每隔15秒鐘(可以通過設置controller manager的–horizontal-pod-autoscaler-sync-period參數設定,默認15s)通過觀測metrics值獲取資源使用信息

HPA控制器將獲取資源使用信息與HPA設定值進行對比,計算出需要調整的副本數量

根據計算結果調整副本數量,使得單個POD的CPU使用率儘量逼近期望值,但不能照顧設定的最大,最小值。

以上2,3,4週期循環


週期

HPA控制器觀測資源使用率並作出決策是有周期的,執行是需要時間的,在執行自動伸縮過程中metrics不是靜止不變的,可能降低或者升高,如果執行太頻繁可能導致資源的使用快速抖動,因此控制器每次決策後的一段時間內不再進行新的決策。對於擴容這個時間是3分鐘,縮容則是5分鐘,對應調整參數

--horizontal-pod-autoscaler-downscale-delay

--horizontal-pod-autoscaler-upscale-delay

1

2

自動伸縮不是一次到位的,而是逐漸逼近計算值,每次調整不超過當前副本數量的2倍或者1/2


通過kubectl api-versions可以查看到存在3個版本。v1版本只支持CPU,v2beta2版本支持多metrics(CPU,memory)以及自定義metrics。基於autoscaling/v2beta2的hpa yaml文件寫法


apiVersion: autoscaling/v2beta2

kind: HorizontalPodAutoscaler

metadata:

  name: php-apache-hpa

  labels:

    app: hpa-test

spec:

  scaleTargetRef:

    apiVersion: apps/v1

    kind: Deployment

    name: php-apache

  minReplicas: 1

  maxReplicas: 10

  metrics:

  - type: Resource

    resource:

      name: cpu

      target:

        type: Utilization

        averageUtilization: 50


原文鏈接:https://blog.csdn.net/oyym_mv/article/details/87189199

參考kubernetes雲平臺管理實戰:HPA水平自動伸縮

鏈接https://www.cnblogs.com/luoahong/p/10303077.html

參考阿里雲容器HPA設置鏈接https://help.aliyun.com/document_detail/86554.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章