@@ -108,16 +108,18 @@ aggregate of the requested resources by all containers in a pod to find a
108108suitable node for scheduling the pod. The kubelet then enforces these resource
109109constraints by translating the requests and limits into corresponding cgroup
110110settings both for containers and for the pod (where pod level values are
111- aggregates of container level values). The existing Pod API lacks the ability to
112- set resource constraints at pod level, limiting the flexibility and ease of
113- resource management for pods as a whole. This limitation is particularly
114- problematic when users want to focus on controlling the overall resource
115- consumption of a pod without the need to meticulously configure resource
116- specifications for each individual container in it.
111+ aggregates of container level values derived using the formula in
112+ [ KEP #753 ] ( https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/753-sidecar-containers/README.md#resources-calculation-for-scheduling-and-pod-admission ) ).
113+ The existing Pod API lacks the ability to set resource constraints at pod level,
114+ limiting the flexibility and ease of resource management for pods as a whole.
115+ This limitation is particularly problematic when users want to focus on
116+ controlling the overall resource consumption of a pod without the need to
117+ meticulously configure resource specifications for each individual container in
118+ it.
117119
118120To address this, this KEP proposes extending the Pod API to support Pod-level
119- resource limits and requests for non-extended resources (CPU and Memory), in
120- addition to the existing container-level settings.
121+ resource limits and requests for non-extended resources (CPU, Memory and
122+ Hugepages), in addition to the existing container-level settings.
121123
122124## Motivation
123125
@@ -127,7 +129,7 @@ container, it can be challenging to accurately estimate and allocate resources
127129for individual containers, especially for workloads with unpredictable or bursty
128130resource demands. This often leads to over-allocation of resources to ensure that
129131no container experiences resource starvation, as kubernetes currently lacks a
130- mechanism for sharing resources between containers easily.
132+ mechanism for sharing resources between containers within a pod easily.
131133
132134Introducing pod-level resource requests and limits offers a more simplified
133135resource management for multi-container pods as it is easier to gauge the
@@ -161,7 +163,7 @@ This proposal aims to:
161163 the pod level in this phase. However, it could be considered in future extensions of
162164 the KEP.
1631652 . Pod-level device plugins: existing container-level device plugins are
164- compatible with this proposal, but there are some discussion on how to share
166+ compatible with this proposal, but there are some discussions on how to share
165167 device(s) among containers within a pod, which is out of scope of this KEP.
1661683 . This proposal will not explore dynamic QoS class adjustments based on runtime
167169 conditions or pod phases. Instead, it will focus on static QoS class
@@ -178,7 +180,6 @@ This proposal aims to:
178180 utilization, specific optimizations for particular workloads, such as
179181 high-performance computing, will be considered in future iterations.
180182
181-
182183## Proposal
183184
184185### User Stories
@@ -274,16 +275,25 @@ other containers within the pod. This approach not only improves overall resourc
274275utilization but can also lead to cost savings in cloud environments where
275276resource allocation impacts billing.
276277
278+ Note: Understanding the distinction between resource sharing with pod-level
279+ resources feature and with burstable pods is important. While both allow
280+ containers to share resources with other containers, they both operate at
281+ different scopes. Pod-level resources enable containers within a pod to share
282+ unused resoures amongst themselves, promoting efficient utilization within the
283+ pod. In contrast, burstable pods allows sharing of spare resources between
284+ containers in any pods on the node. This means a container in a burstable pod
285+ can use resources available elsewhere on the node.
286+
277287### Notes/Constraints/Caveats
278288
2792891. cgroupv1 has been moved to maintenance mode since Kubernetes version 1.31.
280290 Hence this feature will be supported only on cgroupv2. Kubelet will fail to
281291 admit pods with pod-level resources on nodes with cgroupv1.
282292
2832932. Pod Level Resource Specifications is an **opt-in** feature, and will have no
284- effect on existing deployments. Only deployments that explicitly require this
285- functionality should turn it on by setting the relevant resource section at
286- pod-level in the Pod specification.
294+ effect on existing deployments. Only deployments that explicitly require this
295+ functionality should turn it on by setting the relevant resource section at
296+ pod-level in the Pod specification.
287297
2882983. In alpha stage of Pod-level Resources feature, when using pod-level resources,
289299 in-place pod resizing is unsupported with in-place pod resizing. **Users should
0 commit comments