Nodes only showed live usage against allocatable, so "why won't my pod
schedule while the node is 30% busy?" had no answer without kubectl
describe node or kube-capacity. The scheduler places pods by requests,
not usage.
The nodes pods watch now keeps per-node request and limit totals next to
the pod count, counting each pod the way the scheduler does: app
containers and native sidecars, raised to the largest init container
step, plus overhead, with pod-level declarations taking priority.
%CPU/R and %MEM/R are default node columns, %CPU/L and %MEM/L show in
wide mode, and node-request:<resource> / node-limit:<resource> cover
extended resources such as nvidia.com/gpu. They sort, filter, and color
like the other node percentages and work without Metrics Server.
Why
The nodes view showed live usage against allocatable, but the scheduler places pods by requests. "Why won't my pod schedule while the node is 30% busy?" had no answer in sofka. Users needed
kubectl describe nodeor kube-capacity instead (k9s #764, #2723, #3529, #2846).What
%CPU/Rand%MEM/Rare default nodes-view columns: the summed requests of the pods on each node as a share of allocatable.%CPU/Land%MEM/Lshow in wide mode. Containers without a limit add nothing, as inkubectl describe node, so limits can exceed 100%.node-cpu-request,node-memory-request,node-cpu-limit,node-memory-limit, andnode-request:<resource>/node-limit:<resource>for extended resources such asnvidia.com/gpu. A node that does not advertise the resource shows-.%cpu/r>=80) and color like the other node percentages.Tests
handle_key.