如果您的應用資源使用率存在周期性變化,需要按照類似Crontab的策略定時對Pod進行擴縮容,您可以使用容器定時水平伸縮CronHPA(CronHorizontal Pod Autoscaler)實現Pod的定時擴縮容。CronHPA適用於業務流量有明顯高峰時段、應用程式需要在特定時間執行任務等情境。
閱讀前提示
前提條件
已建立ACK託管叢集、ACK Serverless叢集,請參見建立Kubernetes託管版叢集、建立ACK Serverless叢集。
已通過kubectl工具串連叢集。具體操作,請參見通過kubectl串連Kubernetes叢集。
CronHPA模板及參數介紹
CronHPA基於kubernetes-cronhpa-controller實現。kubernetes-cronhpa-controller是一個基於時間的Pod水平伸縮Controller,按照類似Crontab的策略定時地對叢集進行擴縮容,例如在工作日的業務高峰期自動增加Pod數量,在業務低穀時自動減少Pod數量。CronHPA可以作用於任何支援伸縮子資源(Scale Subresource)的Kubernetes對象,例如Deployment、StatefulSet等。
步驟一:安裝CronHPA組件
您可以安裝CronHPA的組件ack-kubernetes-cronhpa-controller,實現應用負載的定時伸縮。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
單擊應用管理頁簽,找到ack-kubernetes-cronhpa-controller,按照頁面提示完成組件的安裝。
步驟二:建立CronHPA任務
為應用建立和運行CronHPA前,請確保叢集中的CronHPA組件已正常運行,且當前應用只有一個HPA任務對象。以下以無狀態應用為例,介紹如何為已有應用開啟CronHPA。其他工作負載類型的步驟類似。
建立應用時建立CronHPA任務
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在無狀態頁面,單擊使用鏡像建立。
在建立頁面,按照頁面提示完成應用基本資料配置、容器配置、服務配置和定時伸縮配置,建立一個支援CronHPA的Deployment。
具體步驟及配置項說明,請參見建立無狀態工作負載Deployment。下文僅介紹主要配置項。
應用基本資料:配置應用的名稱、副本數量等。
容器配置:配置鏡像,並配置容器所需的CPU和記憶體資源。
進階配置:
在訪問設定地區,單擊服務(Service)對應的建立,配置Service。
在伸縮配置地區,勾選定時伸縮的開啟,按照頁面提示安裝組件(已安裝時可忽略),然後配置定時伸縮的條件和參數。
定時任務名稱:CronHPA任務的名稱。
目標副本數:當到達設定計劃時間時,應用副本數自動調整至該值。
調度周期:設定調度的周期。關於為CronHPA任務設定調度周期的更多資訊,請參見AliyunContainerService/kubernetes-cronhpa-controller。
為已有應用建立CronHPA任務
在工作負載頁面建立
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在無狀態頁面的操作列,單擊目標Deployment對應的詳情,然後單擊容器伸縮頁簽,在定時伸縮地區,按照頁面提示安裝CronHPA組件(如已安裝,可忽略)並單擊建立,配置CronHPA。
配置項
描述
任務名稱
CronHPA任務的名稱。
目標副本數
當到達設定計劃時間時,應用副本數自動調整至該值。
調度周期
設定的調度周期。關於為CronJob任務設定調度周期的更多資訊,請參見AliyunContainerService/kubernetes-cronhpa-controller。
在工作負載伸縮頁面建立
此頁面目前白名單開放中。如需使用,請提交工單申請。
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇
。在頁面右上方,單擊建立自動調整,選擇目標工作負載,然後在水平伸縮頁簽下勾選CronHPA選項,按照頁面提示安裝組件(如已安裝,可忽略),並配置CronHPA策略。
定時自動調整名稱:自訂CronHPA的名稱。
任務名稱:自訂CronHPA任務的名稱。
目標副本數:當到達設定計劃時間時,應用副本數自動調整至該值。
調度周期:設定調度的周期。關於為CronHPA任務設定調度周期的更多資訊,請參見AliyunContainerService/kubernetes-cronhpa-controller。
相關操作
查看、添加或修改CronHPA任務
CronHPA任務建立後,您可以在CronHPA列表查看CronHPA任務狀態和列表。如果您想添加CronHPA任務,或修改原有CronHPA配置,您可以通過以下入口實現。
工作負載伸縮入口
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇
。在水平伸縮頁簽下的CronHPA地區,單擊操作列的編輯。
工作負載入口(以無狀態應用為例,其他工作負載類型步驟類似)
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在無狀態頁面的操作列,單擊目標Deployment對應的詳情,然後單擊容器伸縮頁簽,在定時伸縮地區的操作列,單擊任務添加或編輯。
實現CronHPA與HPA的協同
由於CronHPA和HPA兩者無法相互感知,如果您的應用使用YAML同時配置了CronHPA和HPA,可能會出現兩種配置獨立工作,後執行操作覆蓋了先執行操作的現象。為瞭解決這個問題,ACK提供了CronHPA相容HPA的方案——當檢測到兩者同時存在時,將HPA作為CronHPA的擴縮容對象,從而實現對該HPA定義對象(例如Deployment)的定時擴縮容。
詳細資料,請參見實現CronHPA與HPA的協同。
常見問題
如何卸載ack-kubernetes-cronhpa-controller組件?
登入Container Service管理主控台,在左側導覽列選擇叢集。
在叢集列表頁面,單擊目的地組群名稱,然後在左側導覽列,選擇 。
在Helm頁面,查看是否存在ack-kubernetes-cronhpa-controller組件。
如果存在,請單擊該組件右側操作列下的刪除。
重要通過Helm方式刪除該組件,不會刪除CRD和已建立的Task資源。如需徹底刪除CronHPA相關資源,請手動刪除。
如不存在,請繼續操作下一步。
在叢集管理頁左側導覽列,選擇 。
在組件管理頁面,找到ack-kubernetes-cronhpa-controller組件,單擊右下方的卸載。