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 資源管理在容器層級配置 requests 與 limits,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 驅逐與重新排程。