垂直 Pod 自動調度資源

本頁面提供垂直 pod 自動調度資源的總覽,並說明您可運用其調整容器的 CPU 要求記憶體要求的方式。本頁面也提供了 VerticalPodAutoscaler 自訂資源和相關類型的參考資源。

總覽

垂直 pod 自動調度資源 (VPA) 可讓您免去思考容器 CPU 和記憶體要求指定值的困擾。自動配置器可以建議 CPU 和記憶體要求的值,也可以自動更新 CPU 和記憶體要求的值。

垂直 pod 自動調度資源提供以下優勢:

  • 叢集結點將可有效運用,因為 Pod 所使用的節點正是它們所需要的。

  • Pod 會被安排到具有適當節點的資源上。

  • 您不必執行耗時的基準化任務來決定 CPU 和記憶體要求的正確值。

  • 縮短維護時間,因為自動配置器可以隨時間調整 CPU 和記憶體要求,您無需執行任何操作。

Beta 版之限制:

  • 請勿在具有超過 1000 個節點的叢集上啟用垂直 Pod 自動調度資源。

  • 垂直 Pod 自動調度資源可在每個叢集上支援最多 200 個 VPA 物件。

  • 從 1.12.6 版本開始的地區叢集便都支援垂直 Pod 自動調度資源。

  • 請勿在 CPU 和記憶體上搭配水平 Pod 自動調度資源 (HPA)來使用垂直 Pod 自動調度資源。不過,您可以在自訂外部指標中搭配 HPA 使用 VPA。

垂直 pod 自動調度資源之自動模式

由於 Kubernetes 的限制,若要修改執行中 Pod 資源要求,唯一方式就是重新建立 Pod。因此,如果您建立了一個 updateMode 模式為「Auto」(自動) 的 VerticalPodAutoscaler,則 VerticalPodAutoscaler 將在需要更改 Pod 的資源要求時移除 Pod。

如要限制 Pod 重新啟動的次數,請使用 pod 中斷預算設定

如要確保您的叢集可以處理新的工作負載規模,請使用叢集自動配置器節點自動佈建功能。垂直 Pod 自動配置器會在更新之前通知叢集自動配置器,並在重新建立之前提供工作負載大小調整後所需的資源,以最小化中斷時間。

後續步驟

參考

VerticalPodAutoscaler v1beta2 autoscaling.k8s.io

欄位

TypeMeta

API 群組、版本和種類。

metadata

ObjectMeta

標準物件中繼資料

spec

VerticalPodAutoscalerSpec

期望的 VerticalPodAutoscaler 行為。

status

VerticalPodAutosclerStatus

最近一次觀察到的 VerticalPodAutoscaler 狀態。

VerticalPodAutoscalerSpec v1beta2 autoscaling.k8s.io

欄位
targetRef

CrossVersionObjectReference

參考管理 Pod 組合的控制器以便自動配置器進行控制 (例如,部署或 StatefulSet)。您可以將 VerticalPodAutoscaler 指向任何具有 [Scale](https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.13/#scalespec-v1-autoscaling){:.external} 子資源的控制器。通常,VerticalPodAutoscaler 會從控制器的 ScaleStatus 中擷取 Pod 組合。對於一些廣為人知的控制器 (例如 DaemonSet),VerticalPodAutoscaler 會從控制器的規格中擷取 Pod 組合。

updatePolicy

PodUpdatePolicy

指定在啟動 Pod 時是否套用建議的更新,以及在 Pod 的生命週期內是否套用建議的更新。

resourcePolicy

PodResourcePolicy

指定有關如何針對個別容器調整 CPU 和記憶體要求的政策。

VerticalPodAutoscalerList v1beta2 autoscaling.k8s.io

欄位

TypeMeta

API 群組、版本和種類。

metadata

ObjectMeta

標準物件中繼資料

items

VerticalPodAutoscaler array

VerticalPodAutoscaler 物件清單。

PodUpdatePolicy v1beta2 autoscaling.k8s.io

欄位
updateMode

string

指定在啟動 Pod 時是否套用建議的更新,以及在 Pod 的生命週期內是否套用建議的更新。可能的值為「Off」(關)、「Initial」(初始)、「Recreate」(重新建立) 和「Auto」(自動)。

PodResourcePolicy v1beta2 autoscaling.k8s.io

欄位
containerPolicies

ContainerResourcePolicy array

個別容器的資源政策系列。

ContainerResourcePolicy v1beta2 autoscaling.k8s.io

欄位
containerName

string

政策套用的容器名稱。若未指定,該政策將作為預設政策使用。

mode

ContainerScalingMode

指定在啟動容器時是否套用建議的更新,以及在容器的生命週期內是否套用建議的更新。可能的值為「Off」(關閉) 和「Auto」(自動)。

minAllowed

ResourceList

指定容器允許的最小 CPU 要求和記憶體要求。

maxAllowed

ResourceList

指定容器允許的最大 CPU 要求和記憶體要求。

VerticalPodAutoscalerStatus v1beta2 autoscaling.k8s.io

欄位
recommendation

RecommendedPodResources

最近建議的 CPU 和記憶體要求。

conditions

VerticalPodAutoscalerCondition array

描述目前的 VerticalPodAutoscaler 狀態。

RecommendedPodResources v1beta2 autoscaling.k8s.io

欄位
containerRecommendation

RecommendedContainerResources array

個別容器的資源建議系列。

RecommendedContainerResources v1beta2 autoscaling.k8s.io

欄位
containerName

string

建議套用的容器名稱。

target

ResourceList

容器的建議 CPU 要求和記憶體要求。

lowerBound

ResourceList

容器的最小建議 CPU 要求和記憶體要求。此數量不足以使應用程式穩定。若使用較小的 CPU 和記憶體要求來執行,可能會對效能或可用性產生重大影響。

upperBound

ResourceList

容器的最大建議 CPU 要求和記憶體要求。高於這些值的 CPU 和記憶體要求可能會被浪費。

uncappedTarget

ResourceList

由自動配置器所計算的最新資源建議,僅根據實際資源使用情況計算,並未考慮 ContainerResourcePolicy。如果實際資源使用率導致目標違反 ContainerResourcePolicy,則可能與受限的建議不同。此欄位僅用於指示狀態;並不會影響實際的資源分配。

VerticalPodAutoscalerCondition v1beta2 autoscaling.k8s.io

欄位
type

VerticalPodAutoscalerConditionType

已說明的條件類型。可能的值為「RecommendationProvided」、「LowConfidence」、「NoPodsMatched」和「FetchingHistory」。

status

ConditionStatus

條件的狀態。可能的值為「True」、「False」和「Unknown」。

lastTransitionTime

Time

條件最近一次從一個狀態轉變為另一個狀態的時間。

reason

string

上次從一種狀態轉換到另一種狀態的原因。

message

string

人類可讀的字串,提供有關從一個狀態到另一個狀態最後一次轉換的詳情。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Kubernetes Engine 說明文件