![](/img/trans.png)
[英]Kubernetes : How to configure / implement HPA to use CPU for scaling
[英]Kubernetes HPA - How to avoid scaling-up for CPU utilisation spike
默認的 HPA 檢查間隔為 30 秒。 這可以通過更改控制器管理器的標志--horizontal-pod-autoscaler-sync-period
的值來配置。
Horizontal Pod Autoscaler 實現為一個控制循環,其周期由控制器管理器的 --horizontal-pod-autoscaler-sync-period 標志控制。
在每個時間段內,控制器管理器根據每個 HorizontalPodAutoscaler 定義中指定的指標查詢資源利用率。 控制器管理器從資源指標 API(對於每個 Pod 資源指標)或自定義指標 API(對於所有其他指標)獲取指標。
為了在 kube-controller-manager 中更改/添加標志 - 您應該可以訪問主節點上的/etc/kubernetes/manifests/
目錄,並且能夠修改/etc/kubernetes/manifests/kube-controller-manager.yam
注意:您無法在 GKE、EKS 和其他托管集群上執行此操作。
更重要的是,我建議增加--horizontal-pod-autoscaler-downscale-stabilization
(替代--horizontal-pod-autoscaler-upscale-delay
)。
如果您擔心長時間中斷,我建議您設置一個自定義指標(如果網絡在最后${duration}
關閉, ${duration}
,否則為 0)並將指標的目標值設置為 1(除了基於 CPU 的自動縮放)。 這邊走:
如果網絡在最后${duration}
中出現故障,基於自定義指標的建議將等於您部署的當前大小。 此建議的最大值和非常低的 CPU 建議將等於部署的當前大小。 在連接恢復之前不會有縮小(由於縮小穩定窗口,幾分鍾后)。
如果網絡可用,則基於該指標的推薦將是 0。如果 CPU 推薦達到最大值,它將等於 CPU 推薦,並且自動縮放器將正常運行。 我認為這比限制自動縮放步驟的大小更能解決您的問題。 限制自動縮放步驟的大小只會減慢 pod 數量減少的速度,因此更長的網絡中斷仍會導致您的部署縮小到允許的最小大小。
您還可以使用基於內存的縮放
由於無法在 Kubernetes 中創建基於內存的 hpa,因此編寫了一個腳本來實現相同的功能。 您可以通過單擊此鏈接在此處找到我們的腳本:
https://github.com/powerupcloud/kubernetes-1/blob/master/memory-based-autoscaling.sh
克隆存儲庫:
https://github.com/powerupcloud/kubernetes-1.git
然后進入 Kubernetes 目錄。 執行help命令獲取說明:
./memory-based-autoscaling.sh --help
在此處閱讀更多信息: 基於內存的自動縮放。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.