平台與維運 2026 年 5 月 12 日

2026-05-12 — K8s v1.36 Pod 層級資源原地縱向擴縮升至 Beta

primary=https://kubernetes.io/blog/2026/04/30/kubernetes-v1-36-inplace-pod-level-resources-beta/

Kubernetes v1.36:Pod 層級資源原地縱向擴縮升至 Beta,cgroup v2 動態調整無需重啟容器

Kubernetes Blog · 2026-04-30

Kubernetes v1.36 將 In-Place Pod-Level Resources Vertical Scaling 功能升至 Beta,並預設啟用(feature gate:InPlacePodLevelResourcesVerticalScaling)。這個功能允許更新運行中 Pod 的聚合資源預算(.spec.resources),在許多情況下不需要重啟任何容器,適用於 sidecars、多容器 Pod 等複雜場景的彈性資源調整。

Pod 層級資源模型

傳統 Kubernetes 資源管理在容器層級配置 requestslimits,sidecar 與主容器分別設定。Pod-Level Resources 引入聚合資源預算的概念:在 Pod 規格的 .spec.resources 設定整體上限,多個容器共享這個資源池,容器本身不一定需要設定個別限制。

apiVersion: v1
kind: Pod
spec:
  resources:           # Pod 層級聚合預算
    limits:
      cpu: "2"
      memory: "4Gi"
  containers:
  - name: main-app
    resizePolicy:
    - resourceName: "cpu"
      restartPolicy: "NotRequired"
  - name: sidecar
    resizePolicy:
    - resourceName: "cpu"
      restartPolicy: "NotRequired"

原地調整機制

調整操作透過 kubectl patch pod <name> --subresource resize 觸發,Kubelet 根據每個容器的 resizePolicy.restartPolicy 決定是否重啟:

  • NotRequired:Kubelet 透過 CRI 的 UpdateContainerResources 呼叫動態更新 cgroup 限制,不重啟容器
  • RestartContainer:容器重啟後套用新的聚合邊界

為防止資源超用,調整操作有序進行:增加資源時,Pod 層級 cgroup 先擴展,再調整容器層級;減少資源時,容器層級先限縮,再收縮 Pod 層級 cgroup。

必要條件

此功能僅支援 cgroup v2,需要支援 UpdateContainerResources CRI 呼叫的容器執行時(containerd v2.0+ 或 CRI-O)。調整狀態透過 Pod Conditions 追蹤:PodResizePending(節點尚未受理)與 PodResizeInProgress(受理但 cgroup 尚未完全套用)。

影響範圍

這個 Beta 功能與 v1.36 的另一特性「Pod-Level Resource Managers (Alpha)」共同構成 Kubernetes 精細資源管理的基礎。Pod 層級資源預算與原地調整的組合對批次運算工作負載、服務網格 sidecar 管理以及垂直 Pod 自動擴縮(VPA)的無中斷部署場景有直接效益,可避免調整資源設定觸發的 Pod 驅逐與重新排程。

原始來源:Kubernetes Blog — Kubernetes v1.36: In-Place Vertical Scaling for Pod-Level Resources Graduates to Beta


End of article
0
Would love your thoughts, please comment.x
()
x