[英]Kubernetes HPA Scales Up Rapidly with Custom Metric
我有一個在 GKE 上運行的 Spring Boot 應用程序,需要約 7 分鍾才能准備就緒。 我創建了一個 HPA,基於自定義的每秒請求量,如下所示:
kind: "HorizontalPodAutoscaler"
metadata:
name: X
namespace: X
spec:
maxReplicas: 10
minReplicas: 3
scaleTargetRef:
apiVersion: "apps/v1"
kind: "Deployment"
name: "X"
metrics:
- type: "Pods"
pods:
metric:
name: "istio_requests_per_second"
target:
type: "AverageValue"
averageValue: 30
istio_requests_per_second指標已經計算了可用 pod 的平均 RPS ,這導致每個 pod 的值相同。 例如,如果總共有 150 個 RPS,並且有 5 個可用的 Pod,則 istio_requests_per_second將為 30。
當istio_requests_per_second增加到略高於 30 時,HPA 將繼續生成 pod,直到其中一個新創建的 pod 准備好接收一部分請求——假設 2 RPS,以防指標增加到 32 RPS。 這完全有道理,因為在新創建的 pod 准備就緒之前,它們不會收到請求,並且 HPA 會嘗試將 RPS 的數量保持在目標值——30 左右。
問題是,我不希望 HPA 在 RPS 稍微增加的情況下生成數十個 pod。 例如,在 32 RPS 的情況下,一個新的 pod 應該足夠了。 我認為主要問題是啟動時間長,因為在決定擴展的時間和 pod 准備就緒之間存在自動縮放延遲。
因為我在 GKE 上運行,所以我無法更改 kube-controller-manager 標志,例如--horizontal-pod-autoscaler-sync-period 。
我也在 Kube.netes 1.17 上運行,所以配置漸進縮放的行為字段是沒有問題的。 此外,我不想限制縮放比例,可能是istio_requests_per_second實際上超過了 100 RPS。
TL;DR:我如何配置 Kube.netes HPA 在啟動緩慢的應用程序每秒請求略有增加的情況下不生成數十個 pod?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.