Kubernetes 彈性伸縮HPA功能加強Advanced Horizontal Pod Autoscaler -介紹部署篇

背景

WHAT(作什麼)

Advanced Horizontal Pod Autoscaler(簡稱:AHPA)是kubernetes中HPA的功能加強. 在兼容原生HPA功能基礎上,增長預測、執行模式配置、縮容控制等功能。用戶可使用AdvancedHorizontalPodAutoscaler對支持scale功能的對象(例如Deployment等)進行彈性伸縮。nginx

WHY(爲何作)

HPA在使用方面存在不便之處:算法

  • 擴縮模式不靈活:建立HPA後,資源真實擴縮後方可驗證可用性
  • 擴縮控制存在必定風險,縮容按照目標態單次執行,易形成業務抖動
  • 針對規律性強應用,沒法進行特殊處理,好比提早備容,下降擴容效率低帶來的風險
  • 支持指標須要自定義擴展,須要必定開發成本

How(怎麼作)

AHPA功能分爲兩部分:controller和algorithm。api

  • controller部分:HPA功能兼容、閾值觸發和預測觸發結果處理、擴縮模式功能、縮容控制功能等
  • algorithm部分:提供一個基於STL + auto-arima的預測算法實現功能
  • 總體架構以下:


使用場景

週期性規律明顯應用成本優化 --提早備容,下降容量風險

針對規律性明顯的應用,通常有以下特徵:
bash


上圖中,紅線表示應用的入網流量(qps),藍線表示容器數。從圖中藍色能夠看出,在qps到來前一段時間(好比:60min)已經開始備容,在qps達到峯值前資源已經ready,下降流量高峯來臨時刻備容應用抖動帶來的風險;在qps峯值事後,資源緩慢回收(縮容速率線性遞減),避免產生浪費。經過上圖能夠看出,針對規律性明顯應用,提早備容,緩慢縮容,最終可以保證應用穩定性的前提下達到成本優化目的。架構

部署

前置條件

  • helm v2版本大於 v2.11.0+.
  • 預測功能依賴"阿里云云監控",需安裝"ack-alibaba-cloud-metrics-adapter"組件.

安裝 && 卸載

安裝chart

方式一:進入「容器服務」->"市場"->"應用目錄"->"ack-advanced-horizontal-pod-autoscaler"進行安裝,以下圖:
app


方式二:優化

helm install ack-advanced-horizontal-pod-autoscaler -n ahpa複製代碼

卸載chart

helm delete ahpa複製代碼

helm參數配置

參數說明默認值ahpa.replicaCountAHPA controller 副本數1ahpa.imageTagAHPA 鏡像tag.v1.0ahpa.imagePullPolicyAHPA 鏡像拉取策略Alwaysahpa.ALGORITHM_SERVICE_AHPA_SVC_HOSTAHPA 算法依賴svcalgorithm-servicealgorithm.replicaCount算法服務 副本數1algorithm.ports算法服務 端口號5000algorithm.imageTag算法服務 鏡像tag1.0algorithm.imagePullPolicy算法服務 鏡像拉取策略AlwaysalibabaCloudMetricsAdapter.needcreate是否安裝alibaba-cloud-metric-adaptertruecrds.needcreate是否安裝crdstruerbac.needcreate是否配置rbactrueui

使用

運行一個AHPA demo

apiVersion: autoscaling.alibabacloud.com/v1
kind: AdvancedHorizontalPodAutoscaler
metadata:
  labels:
    controller-tools.k8s.io: "1.0"
  name: ahpa-sample-original-support
  namespace: kube-system
spec:
   scaleTargetRef:
      apiVersion: extensions/v1beta1
      kind: Deployment
      name: nginx-deploy
   selector:
     matchLabels:
       app: nginx-deploy
   minReplicas: 2
   maxReplicas: 5
   # 擴縮模式,scalingUpOnly:只擴模式,observer:觀察模式,auto:擴縮模式
   scaleMode: "auto"
   # 單位爲分鐘,預測將來60分鐘所需副本數
   forecastWindow: 60
   metrics:
     - type: External
       external:
        metric:
          name: k8s_workload_cpu_util
          selector:
            matchLabels:
              k8s.cluster.id: "xxx"
              k8s.workload.name: "nginx-deploy"
              k8s.workload.type: "Deployment"
              k8s.workload.namespace: "kube-system"
              k8s.period: "100"
        target:
          type: Value
          value: 60複製代碼

AHPA功能加強配置說明 && 指標支持

功能加強說明

參數說明默認值scaleMode擴縮模式,scalingUpOnly:只擴模式,observer:觀察模式,auto:擴縮模式"observer"forecastWindow預測將來時間窗口(分鐘),0表示不使用預測功能0阿里雲

最後

Advanced Horizontal Pod Autoscaler可針對週期性規律強的應用進行提早備容,減小擴容資源申請、應用啓動耗時帶來的容量風險,同時更好的支持擴縮模式和擴縮控制,增長了自動擴縮的業務的可用性。spa

原文連接

本文爲雲棲社區原創內容,未經容許不得轉載。

相關文章
相關標籤/搜索