日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

部署AHPA

容器服務 Kubernetes 版支持AHPA(Advanced Horizontal Pod Autoscaler)彈性能力。AHPA可以根據歷史數據進行學習和分析,提前預測未來的資源需求,并據此動態調整Pod副本數量,確保在業務高峰到來之前完成資源的擴容和預熱操作,從而提高系統的響應速度和穩定性。同時,當預測到業務低谷時,也會適時縮容以節省資源成本。

前提條件

  • 已創建ACK托管集群ACK Serverless集群。具體操作,請參見創建ACK托管集群創建集群。

  • 已開啟Prometheus監控,且Prometheus監控中至少已收集7天應用歷史數據(CPU、Memory等)。關于開啟Prometheus監控的具體操作,請參見使用阿里云Prometheus監控。

步驟一:安裝AHPA Controller

  1. 登錄容器服務管理控制臺,在左側導航欄選擇集群。

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇運維管理 > 組件管理。

  3. 組件管理頁面,定位AHPA Controller組件,然后在組件卡片上單擊安裝,按照頁面提示完成組件的安裝。

步驟二:配置Prometheus數據源

  1. 登錄ARMS控制臺。

  2. 在左側導航欄選擇Prometheus監控 > 實例列表,進入可觀測監控 Prometheus 版的實例列表頁面。

  3. 實例列表頁面頂部,選擇Prometheus實例所在的地域,然后單擊目標實例名稱(與ACK集群同名)。

  4. 在當前設置頁面,在HTTP API地址(Grafana 讀取地址)區域記錄如下配置項的值。

    • (可選)如果開啟了Token,則需要設置訪問Token。

    • 查看并記錄內網地址(Prometheus URL)。96D865F4-D626-4aee-8FCF-916A61DA7616.png

  5. 在ACK集群中設置Prometheus查詢地址。

    1. 使用以下內容,創建application-intelligence.yaml。

      • prometheusUrl:ARMS Prometheus訪問地址。

      • token:Prometheus的訪問Token。

      apiVersion: v1
      kind: ConfigMap
      metadata:
        name: application-intelligence
        namespace: kube-system
      data:
        prometheusUrl: "http://cn-hangzhou-intranet.arms.aliyuncs.com:9443/api/v1/prometheus/da9d7dece901db4c9fc7f5b9c40****/158120454317****/cc6df477a982145d986e3f79c985a****/cn-hangzhou"
        token: "eyJhxxxxx"
      說明

      如需查看AHPA對應的Prometheus監控大盤,您還需要在此Configmap中配置如下字段:

      • prometheus_writer_url:設置Remote Write內網地址。

      • prometheus_writer_ak: 設置阿里云賬號的AccessKeyID。

      • prometheus_writer_sk:設置阿里云賬號的AccessKeySecret。

      更多信息,請參見為AHPA開啟Prometheus大盤。

    2. 執行如下命令,部署application-intelligence。

      kubectl apply -f application-intelligence.yaml

步驟三:部署測試服務

測試服務包括fib-deployment、fib-svc以及用于模擬請求峰谷服務fib-loader,同時部署一個HPA資源用于與AHPA進行結果對比。

使用以下內容,創建demo.yaml。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: fib-deployment
  namespace: default
  annotations:
    k8s.aliyun.com/eci-use-specs: "1-2Gi"
spec:
  replicas: 1
  selector:
    matchLabels:
      app: fib-deployment
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: fib-deployment
    spec:
      containers:
      - image: registry.cn-huhehaote.aliyuncs.com/kubeway/knative-sample-fib-server:20200820-171837
        imagePullPolicy: IfNotPresent
        name: user-container
        ports:
        - containerPort: 8080
          name: user-port
          protocol: TCP
        resources:
          limits:
            cpu: "1"
            memory: 2000Mi
          requests:
            cpu: "1"
            memory: 2000Mi
---
apiVersion: v1
kind: Service
metadata:
  name: fib-svc
  namespace: default
spec:
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 8080
  selector:
    app: fib-deployment
  sessionAffinity: None
  type: ClusterIP
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: fib-loader
  namespace: default
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app: fib-loader
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: fib-loader
    spec:
      containers:
      - args:
        - -c
        - |
          /ko-app/fib-loader --service-url="http://fib-svc.${NAMESPACE}?size=35&interval=0" --save-path=/tmp/fib-loader-chart.html
        command:
        - sh
        env:
        - name: NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        image: registry.cn-huhehaote.aliyuncs.com/kubeway/knative-sample-fib-loader:20201126-110434
        imagePullPolicy: IfNotPresent
        name: loader
        ports:
        - containerPort: 8090
          name: chart
          protocol: TCP
        resources:
          limits:
            cpu: "8"
            memory: 16000Mi
          requests:
            cpu: "2"
            memory: 4000Mi
---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
  name: fib-hpa
  namespace: default
spec:
  maxReplicas: 50
  minReplicas: 1
  scaleTargetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: fib-deployment
  targetCPUUtilizationPercentage: 50
---

步驟四:部署AHPA

您可以通過提交AdvancedHorizontalPodAutoscaler資源配置彈性策略,具體操作如下。

  1. 使用以下內容,創建ahpa-demo.yaml。

    apiVersion: autoscaling.alibabacloud.com/v1beta1
    kind: AdvancedHorizontalPodAutoscaler
    metadata:
      name: ahpa-demo
    spec:
      scaleStrategy: observer
      metrics:
      - type: Resource
        resource:
          name: cpu
          target:
            type: Utilization
            averageUtilization: 40
      scaleTargetRef:
        apiVersion: apps/v1
        kind: Deployment
        name: fib-deployment 
      maxReplicas: 100
      minReplicas: 2
      stabilizationWindowSeconds: 300
      prediction:
        quantile: 95
        scaleUpForward: 180
      instanceBounds:
      - startTime: "2021-12-16 00:00:00"
        endTime: "2031-12-16 00:00:00"
        bounds:
        - cron: "* 0-8 ? * MON-FRI"
          maxReplicas: 15
          minReplicas: 4
        - cron: "* 9-15 ? * MON-FRI"
          maxReplicas: 15
          minReplicas: 10
        - cron: "* 16-23 ? * MON-FRI"
          maxReplicas: 20
          minReplicas: 15

    部分參數說明如下:

    參數

    是否必選

    說明

    scaleTargetRef

    指定目標Deployment。

    metrics

    用于配置彈性Metrics,當前支持CPU、GPU、Memory、QPS、RT等指標。

    target

    目前閾值,例如averageUtilization: 40表示CPU使用目標閾值為40%。

    scaleStrategy

    用于設置彈性伸縮模式。默認值為observer。

    • auto:由AHPA負責擴縮容。

    • observer:只觀察,但不進行真正的伸縮動作。您可以通過這種方式觀察AHPA的工作是否符合預期。

    • scalingUpOnly:只擴容不縮容。

    • proactive:只生效主動預測。

    • reactive:只生效被動預測。

    maxReplicas

    最大擴容實例數。

    minReplicas

    最小縮容實例數。

    stabilizationWindowSeconds

    縮容冷卻時間,默認300秒。

    prediction. quantile

    預測分位數,業務指標實際值低于設定目標值的概率越大表示越保守。取值范圍為0~1,支持兩位小數,默認值為0.99。推薦取值范圍為0.90~0.99。

    prediction. scaleUpForward

    Pod達到Ready狀態所需要的時間(冷啟動時間)。

    instanceBounds

    擴縮容時間段實例數邊界。

    • startTime:表示開始時間。

    • endTime:表示結束時間。

    instanceBounds. bounds. cron

    用于配置定時任務,Cron表達式表示一個時間集合,使用5個空格分隔的字段表示,例如- cron: "* 0-8 ? * MON-FRI"表示每月星期一到星期五晚上12點到早上8點執行任務。

    Cron表達式的字段解釋如下,更多信息,請參見Cron表達式。

    字段名

    是否必須

    允許的值

    允許的特定字符

    分(Minutes)

    0~59

    * / , -

    時(Hours)

    0~23

    * / , -

    日(Day of Month)

    1~31

    * / , – ?

    月(Month)

    1~12或JAN~DEC

    * / , -

    星期(Day of Week)

    0~6或SUN~SAT

    * / , – ?

    說明
    • 月(Month)和星期(Day of Week)字段的值不區分大小寫,例如SUN、Sunsun效果一致。

    • 若星期(Day of Week)字段未配置,默認為 *

    • 特定字符說明:

      • *:表示所有可能的值。

      • /:表示指定數值的增量。

      • ,:表示列出枚舉值。

      • -:表示范圍。

      • ?:表示不指定值。

  2. 執行以下命令,創建AHPA彈性策略。

    kubectl apply -f fib-deployment.yaml

步驟五:查看預測結果

查看AHPA彈性預測效果,可以為AHPA開啟Prometheus大盤。

說明

由于預測需要歷史7天的數據,上述示例部署完成之后,需要運行7天才可以看到預測結果。如果已有線上的應用可以直接在AHPA中指定該應用即可。

本文以彈性伸縮模式配置為observer模式(觀察者模式)為例,與使用HPA策略(可作為應用運行實際所需的資源量進行參考)進行對比,觀察AHPA預測結果是否符合預期。

image.png

  • CPU實際使用量與預測使用量:綠色表示HPA實際的CPU使用量,黃色表示AHPA預測出來的CPU使用量。

    • 黃色曲線大于綠色,表明預測的CPU容量充足。

    • 黃色曲線提前于綠色,表明提前準備好了所需資源。

  • Pod趨勢:綠色表示使用HPA實際的擴縮容Pod數,黃色表示AHPA預測出來的擴縮容Pod數。

    • 黃色曲線小于綠色,表明預測的Pod數量更少。

    • 黃色曲線比綠色更為平滑,表明通過AHPA擴縮容波動更平緩,提升業務穩定性。

通過預測結果表明,彈性預測趨勢符合預期。若經過觀察后,符合預期,您可以將彈性伸縮模式設置為auto,由AHPA負責擴縮容。

相關文檔