Skip to content
KEP Brain

KEP-3953keps/sig-node/3953-in-place-node-resource-resize

In-place Node Resource Resize

implementablealphasig-nodelatest v1.38
This proposal facilitates dynamic native resource resizing (increases and decreases in capacity) on a node to streamline cluster capacity updates, offering a seamless alternative to adding or removing nodes from an existing cluster. The revised node configurations automatically propagate at both the node and cluster levels. Today, mutating Node.Status.Capac… Full summary

This proposal facilitates dynamic native resource resizing (increases and decreases in capacity) on a node to streamline cluster capacity updates, offering a seamless alternative to adding or removing nodes from an existing cluster. The revised node configurations automatically propagate at both the node and cluster levels. Today, mutating Node.Status.Capacity is not a supported or safe operation in Kubernetes. The Kubernetes ecosystem (Scheduler, Cluster Autoscaler, VPA, Quota system) has never been explicitly designed or tested to tolerate a live change to a Node's capacity values. This KEP addresses the problem in two ordered layers: Layer 1 — Ecosystem Tolerance: Formally define the contract that the broader cluster ecosystem must honour when Node.Status.Capacity changes. Establish the API-server mutations, Scheduler cache-invalidation tests, Cluster Autoscaler behaviour validation, and Quota/VPA integration points that make a capacity change safe to propagate — even if, as a first step, that change is initiated by a Kubelet restart. This is the scope of the v1.38 Alpha milestone. Layer 2 — Declarative Capacity Actuation: Introduce Node.Spec.ConfiguredCapacity, the declarative API field that allows external controllers to trigger a capacity change. Implement the Kubelet reconciliation loop that updates cgroups, re-initialises sub-managers (CPU Manager, Memory Manager), recalculates container swap limits via the CRI, and synchronises Node.Status — all on the running node. The CapacityConfigured Node Condition disseminates the live reconciliation state to external orchestrators. This layer is fully described in this KEP and targets a subsequent milestone (v1.39 Alpha or later), pending resolution of the open design questions documented in Open Questions for Layer 2. The full design of Layer 2 — including the Node.Spec.ConfiguredCapacity API field, the Kubelet reconciliation loop, and the CapacityConfigured c

Facts

PRR approvers
@deads2kalpha
Tracking issue
#3953(opens GitHub in a new tab) openmilestone v1.38sig/nodesig/schedulingstage/alphatracked/yeslead-opted-in
Milestones
alpha v1.38
Participating SIGs
sig-scheduling
Feature gates
InPlaceNodeResourceResize
Created / last updated
2023-10-04 / none
Loading decisions and status history

Keyboard shortcuts

Everywhere

?
Show or hide this list
/
Focus the question box on Ask, otherwise the page search
Ctrl Kor⌘ K
Focus the KEP search in the top bar
t
Switch the theme (system, light, dark)
Esc
Close a dialog, a search list or a menu

Go to a page

Press g, then the letter

g h
Home
g a
Ask
g e
Explore
g u
Audit
g m
Memory
g b
About

Ask

Enter
Send the question
Shift Enter
New line in the question
Esc
Cancel the running question

Search lists

KEP search and Explore search

↓or↑
Move through the results
HomeorEnd
First or last result (Explore)
Enter
Open the highlighted result, or KEP-n when the query is a number

KEP page

o
Open the KEP on GitHub
y
Open kep.yaml on GitHub
a
Ask about this KEP
←or→
Previous or next tab, when a tab is focused

Findings table

With a finding row focused (Tab into the table or click a row)

jork
Next or previous finding
EnterorSpace
Expand or collapse the finding
o
Open the finding's KEP page
d
Draft the fix as an issue text (nothing is posted)
]or[
Next or previous page of findings

Shortcuts pause while you type in a field. Press ? or Esc to close.