KEP-5517: Introduce DRA for Native Resources KEP#5755
KEP-5517: Introduce DRA for Native Resources KEP#5755k8s-ci-robot merged 1 commit intokubernetes:masterfrom
Conversation
pravk03
commented
Dec 25, 2025
- One-line PR description: Support native resource management through DRA.
- Issue link: DRA: Native Resource Requests #5517
- Other comments:
|
Skipping CI for Draft Pull Request. |
dfa064c to
02706c7
Compare
|
/cc |
|
/cc |
df2979a to
9146641
Compare
|
/cc @johnbelamaric |
|
/wg device-management |
dom4ha
left a comment
There was a problem hiding this comment.
Have you considered defining some sort of framework level consumable counter that different plugins could consume capacity from? DRA devices could use this counter using Consumable Capacity feature and NodeResources plugin would be extended somehow to use it as well.
It would be a bit cleaner conceptually, but we'd introduce quite significant framework change, which may be harder to get through the process.
| #### Unreferenced Claims | ||
|
|
||
| If a `ResourceClaim` is listed in `pod.Spec.ResourceClaims` but not referenced by any container in `pod.Spec.Containers[*].Resources.Claims`. | ||
| The resources associated with this claim ARE still accounted for against the node's capacity. The DRA allocator reserves the devices for the pod, |
There was a problem hiding this comment.
What about in case of "AddPerReference" accounting policy?
There was a problem hiding this comment.
Have you considered defining some sort of framework level consumable counter that different plugins could consume capacity from? DRA devices could use this counter using Consumable Capacity feature and NodeResources plugin would be extended somehow to use it as well.
So, one other option we thought about was simply to treat the NodeAllocatable as CounterSet that is implicitly always available with a well-known name. If we additionally layer in a concept of translating consumed capacity into counter set consumption (ie, a mapping between our current consumable capacity concept and our counter set concept), then we can solve many of the same problems.
There was a problem hiding this comment.
What about in case of "AddPerReference" accounting policy?
Updated this section. In the case of unreferenced claims, we should account for it once when we update NodeInfo irrespective of the accounting policy.
There was a problem hiding this comment.
So, one other option we thought about was simply to treat the NodeAllocatable as CounterSet that is implicitly always available with a well-known name. If we additionally layer in a concept of translating consumed capacity into counter set consumption (ie, a mapping between our current consumable capacity concept and our counter set concept), then we can solve many of the same problems.
@johnbelamaric I believe this is something that we can still consider post-alpha. Note that it may also address the problem of scoring (node fit would see a counter aggregating native resource request coming from different plugins.
Maybe we could mention this option for the future consideration.
There was a problem hiding this comment.
@dom4ha I have covered scoring in "Future Enhancements" section. In the current proposal (and draft implementation), scoring in NodeResourcesFit does not consider claim requests. But it should be possible to introduce unified scoring.
c5ae967 to
b7623ed
Compare
|
Summary of modifications made KEP based on discussions. This should help reduce the scope and implementation complexity on the scheduler side.
|
|
/approve Thanks for reducing the scope, which should be helpful. |
|
/hold (for sig-node lgtm) |
| - The Kubelet's admission handler is updated to consider native resource claims in `Pod.Status`. | ||
| - All unit and integration tests outlined in the Test Plan are implemented and verified. | ||
|
|
||
| #### Alpha2 / Beta |
There was a problem hiding this comment.
how do we know that we are moving in the right direction by making kubelet read native resources added by DRA from Pod Status? Is it part of "Gather feedback from alpha"?
There was a problem hiding this comment.
Do you mean populating the claim information in pod status rather than ResourceClaim status ?. Or the general idea of having kubelet having to look outside of pod.spec ?
|
The new scope seems more reasonable. I am still very un-easy on a few topics:
|
|
/approve for PRR |
I think the answer depends heavily on the specific plugin implementation. Specifically thinking of dra-driver-cpu, we can support adoption now using existing workarounds, such as mirroring claim requests in the Pod Spec. I view having Pod Level Resources define the overall shape (including claims) as one clean path for migrating to this KEP, but this definitely needs more thought. I am not sure if the same approach works for Memory or other drivers. @ffromani, since you are working on both CPU and Memory drivers, you may have any thoughts here? On the contrary, without the understanding on native claims in scheduler and kubelet we would have to rely on workarounds (potentially different) in all the native resource driver implementations ?.
Yes, we have seen interest in GPU/CPU fungibility. |
Like you, I tend to believe that combining with Pod Level Resources should work, but we need more data here. I see the point about experimenting with drivers before adding important changes into core kubernetes. I'm not against it, even if I see clearly the value in this KEP. The issues with this approach (try external drivers first) boils down to chicken/egg problems:
What I'm trying to say is that I see the value in experimenting out of tree and I personally would encourage that but without some core kubernetes changes, be them in the scheduler, in the kubelet or likely both, what drivers for core resources can do is very limited, and that hampers early adoption. |
|
/lgtm Thank you all for the extensive discussions, both online and offline. We’ve successfully narrowed the scope to the most essential components. While some open questions remain, I believe it's ready to move forward into the implementation phase to continue exploring those details. Agreed with Sergey above to move cpu dra driver to GA without being blocked by this KEP, so that we can have early and more feedbacks from the users. |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: dchen1107, dom4ha, johnbelamaric, pravk03 The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
|
/hold cancel |