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

使用容器定時伸縮(CronHPA)

如果您的應用資源使用率存在周期性變化,需要按照類似Crontab的策略定時對Pod進行擴縮容,您可以使用容器定時水平伸縮CronHPA(CronHorizontal Pod Autoscaler)實現Pod的定時擴縮容。CronHPA適用于業務流量有明顯高峰時段、應用程序需要在特定時間執行任務等場景。

閱讀前提示

ACK集群提供了多種工作負載伸縮(調度層彈性)和節點伸縮(資源層彈性)方案,建議您在使用本文檔前閱讀彈性伸縮概述,了解不同方案的適用場景、使用限制等。

前提條件

CronHPA模板及參數介紹

CronHPA基于kubernetes-cronhpa-controller實現。kubernetes-cronhpa-controller是一個基于時間的Pod水平伸縮Controller,按照類似Crontab的策略定時地對集群進行擴縮容,例如在工作日的業務高峰期自動增加Pod數量,在業務低谷時自動減少Pod數量。CronHPA可以作用于任何支持伸縮子資源(Scale Subresource)的Kubernetes對象,例如Deployment、StatefulSet等。

展開查看CronHPA YAML示例及涉及的參數介紹

apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: CronHorizontalPodAutoscaler
metadata:
  labels:
    controller-tools.k8s.io: "1.0"
  name: cronhpa-sample
  namespace: default 
spec:
   scaleTargetRef:
      apiVersion: apps/v1
      kind: Deployment
      name: nginx-deployment-basic
   excludeDates:
   # exclude November 15th
   - "* * * 15 11 *"
   # exclude every Friday 
   - "* * * * * 5"
   jobs:
   - name: "scale-down"
     schedule: "30 */1 * * * *"
     targetSize: 1
   - name: "scale-up"
     schedule: "0 */1 * * * *"
     targetSize: 3
     runOnce: false

參數

說明

scaleTargetRef

指定擴縮容的對象。如果對象支持Scale子資源,CronHPA即可支持。

excludeDates

日期數組。當遇到符合excludeDates描述的日期時任務將會被跳過。最小單位為天。

"* * * * * *"表示"<Seconds> <Minutes> <Hours> <Day of month> <Month> <Day of week>"。

如您想在11月15日不運行任務,可像以下示例一樣指定excludeDates

excludeDates:
  - "* * * 15 11 *"

jobs

支持在一個spec中設定多個CronHPA任務。每個CronHPA任務可以配置以下字段:

  • name:它在一個CronHPA中應是唯一的,這樣就可以通過name來區分不同的任務。

  • schedule:它的策略和Crontab類似。kubernetes-cronhpa-controller使用了Golang庫(go-cron)功能更強大的Cron,它支持更多表示規則。創建時請嚴格按照以下格式說明進行設置,否則將導致創建失敗。

    Cron表達式的格式如下:

    Field name   | Mandatory? | Allowed values  | Allowed special characters
      ----------   | ---------- | --------------  | --------------------------
      Seconds      | Yes        | 0-59            | * / , -
      Minutes      | Yes        | 0-59            | * / , -
      Hours        | Yes        | 0-23            | * / , -
      Day of month | Yes        | 1-31            | * / , - ?
      Month        | Yes        | 1-12 or JAN-DEC | * / , -
      Day of week  | Yes        | 0-6 or SUN-SAT  | * / , - ?
  • targetSize:設置調度時,擴縮容的Pod數目。

  • runOnce:設置為true時,任務將只執行一次,第一次執行完則退出(Exit)。

步驟一:安裝CronHPA組件

您可以安裝CronHPA的組件ack-kubernetes-cronhpa-controller,實現應用負載的定時伸縮。

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

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

  3. 單擊應用管理頁簽,找到ack-kubernetes-cronhpa-controller,按照頁面提示完成組件的安裝。

步驟二:創建CronHPA任務

為應用創建和運行CronHPA前,請確保集群中的CronHPA組件已正常運行,且當前應用只有一個HPA任務對象。以下以無狀態應用為例,介紹如何為已有應用開啟CronHPA。其他工作負載類型的步驟類似。

創建應用時創建CronHPA任務

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

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇工作負載 > 無狀態

  3. 無狀態頁面,單擊使用鏡像創建

  4. 創建頁面,按照頁面提示完成應用基本信息配置、容器配置、服務配置和定時伸縮配置,創建一個支持CronHPA的Deployment。

    具體步驟及配置項說明,請參見創建無狀態工作負載Deployment。下文僅介紹主要配置項。

    • 應用基本信息:配置應用的名稱、副本數量等。

    • 容器配置:配置鏡像,并配置容器所需的CPU和內存資源。

    • 高級配置

      • 訪問設置區域,單擊服務(Service)對應的創建,配置Service。

      • 伸縮配置區域,勾選定時伸縮開啟,按照頁面提示安裝組件(已安裝時可忽略),然后配置定時伸縮的條件和參數。

        • 定時任務名稱:CronHPA任務的名稱。

        • 目標副本數:當到達設定計劃時間時,應用副本數自動伸縮至該值。

        • 調度周期:設置調度的周期。關于為CronHPA任務設置調度周期的更多信息,請參見AliyunContainerService/kubernetes-cronhpa-controller

為已有應用創建CronHPA任務

在工作負載頁面創建

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

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇工作負載 > 無狀態

  3. 無狀態頁面的操作列,單擊目標Deployment對應的詳情,然后單擊容器伸縮頁簽,在定時伸縮區域,按照頁面提示安裝CronHPA組件(如已安裝,可忽略)并單擊創建,配置CronHPA。

    create

    配置項

    描述

    任務名稱

    CronHPA任務的名稱。

    目標副本數

    當到達設定計劃時間時,應用副本數自動伸縮至該值。

    調度周期

    設置的調度周期。關于為CronJob任務設置調度周期的更多信息,請參見AliyunContainerService/kubernetes-cronhpa-controller

在工作負載伸縮頁面創建

說明

此頁面目前白名單開放中。如需使用,請提交工單申請。

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

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇自動伸縮 > 工作負載伸縮

  3. 在頁面右上角,單擊創建自動伸縮,選擇目標工作負載,然后在水平伸縮頁簽下勾選CronHPA選項,按照頁面提示安裝組件(如已安裝,可忽略),并配置CronHPA策略。

    • 定時自動伸縮名稱:自定義CronHPA的名稱。

    • 任務名稱:自定義CronHPA任務的名稱。

    • 目標副本數:當到達設定計劃時間時,應用副本數自動伸縮至該值。

    • 調度周期:設置調度的周期。關于為CronHPA任務設置調度周期的更多信息,請參見AliyunContainerService/kubernetes-cronhpa-controller

相關操作

查看、添加或修改CronHPA任務

CronHPA任務創建后,您可以在CronHPA列表查看CronHPA任務狀態和列表。如果您想添加CronHPA任務,或修改原有CronHPA配置,您可以通過以下入口實現。

  • 工作負載伸縮入口

    1. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇自動伸縮 > 工作負載伸縮

    2. 水平伸縮頁簽下的CronHPA區域,單擊操作列的編輯

  • 工作負載入口(以無狀態應用為例,其他工作負載類型步驟類似)

    1. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇工作負載 > 無狀態

    2. 無狀態頁面的操作列,單擊目標Deployment對應的詳情,然后單擊容器伸縮頁簽,在定時伸縮區域的操作列,單擊任務添加或編輯

實現CronHPA與HPA的協同

由于CronHPA和HPA兩者無法相互感知,如果您的應用使用YAML同時配置了CronHPA和HPA,可能會出現兩種配置獨立工作,后執行操作覆蓋了先執行操作的現象。為了解決這個問題,ACK提供了CronHPA兼容HPA的方案——當檢測到兩者同時存在時,將HPA作為CronHPA的擴縮容對象,從而實現對該HPA定義對象(例如Deployment)的定時擴縮容。

詳細信息,請參見實現CronHPA與HPA的協同

常見問題

如何卸載ack-kubernetes-cronhpa-controller組件?

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

  2. 集群列表頁面,單擊目標集群名稱,然后在左側導航欄,選擇應用 > Helm

  3. Helm頁面,查看是否存在ack-kubernetes-cronhpa-controller組件。

    • 如果存在,請單擊該組件右側操作列下的刪除

      重要

      通過Helm方式刪除該組件,不會刪除CRD和已創建的Task資源。如需徹底刪除CronHPA相關資源,請手動刪除。

    • 如不存在,請繼續操作下一步。

  4. 在集群管理頁左側導航欄,選擇運維管理 > 組件管理

  5. 組件管理頁面,找到ack-kubernetes-cronhpa-controller組件,單擊右下方的卸載