該檔案說:
對于每個 Pod 的資源指標(如 CPU),控制器從 Horizo??ntalPodAutoscaler 所針對的每個 Pod 的資源指標 API 中獲取指標。然后,如果設定了目標利用率值,則控制器將利用率值計算為每個 Pod 中容器上的等效資源請求的百分比。如果設定了目標原始值,則直接使用原始度量值。然后,控制器取所有目標 Pod 的利用率或原始值(取決于指定的目標型別)的平均值,并生成用于擴展所需副本數量的比率。
假設我有一個 Pod:
resources:
limits:
cpu: "0.3"
memory: 500M
requests:
cpu: "0.01"
memory: 40M
現在我有一個自動縮放定義為:
type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 60
根據檔案:
使用此指標,HPA 控制器會將擴展目標中 Pod 的平均利用率保持在 60%。利用率是當前資源使用量與 pod請求資源的比率
所以,我不明白這里的東西。如果request是運行應用程式所需的最少資源,將如何基于此值進行縮放?0.01 的 60% 算不了什么,而且服務會不斷擴展。
uj5u.com熱心網友回復:
您的誤解可能是 的值request不一定是您的應用程式需要運行的最小值。
這是您(開發人員、管理員、DevOps)從 Kubernetes 集群請求運行應用程式中的 pod 的內容,它有助于調度程式為您的作業負載選擇正確的節點(例如具有足夠可用資源的節點)。所以,不要把這個值選得太小或太高。
除此之外,自動縮放按您的描述作業。在這種情況下,集群會計算您請求的 CPU 的使用量,并會在使用量超過 60% 時向外擴展。請記住,Kubernetes 不會查看每個 Pod,而是查看該組中所有 Pod 的平均值。
例如,給定兩個 pod 運行,一個 pod 可以在 100% 的請求上運行,而另一個在(幾乎)0% 時運行。平均值約為 50%,因此在 Horizo??ntal Pod Autoscaler 的情況下不會發生自動縮放。
在生產中,我個人嘗試對正確的值進行猜測,然后查看指標并根據我的實際作業負載調整值。Prometheus 是您的朋友,或者至少是指標服務器:
https://github.com/prometheus-operator/kube-prometheus https://github.com/kubernetes-sigs/metrics-server
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/337301.html
標籤:Kubernetes
下一篇:如何定義CRD中的欄位順序
