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

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

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


流程html

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

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

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

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

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

以上2,3,4週期循環性能


週期阿里雲

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

--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水平自動伸縮

連接http://www.javashuo.com/article/p-zyedlmof-ey.html

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

相關文章
相關標籤/搜索