Skip to content

KEP-5677: DRA Resource Availability Visibility#5749

Open
nmn3m wants to merge 7 commits intokubernetes:masterfrom
nmn3m:kep-5677-dra-resource-availability-visibility
Open

KEP-5677: DRA Resource Availability Visibility#5749
nmn3m wants to merge 7 commits intokubernetes:masterfrom
nmn3m:kep-5677-dra-resource-availability-visibility

Conversation

@nmn3m
Copy link
Member

@nmn3m nmn3m commented Dec 23, 2025

@k8s-ci-robot
Copy link
Contributor

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@k8s-ci-robot k8s-ci-robot added do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. kind/kep Categorizes KEP tracking issues and PRs modifying the KEP directory sig/scheduling Categorizes an issue or PR as relevant to SIG Scheduling. labels Dec 23, 2025
@k8s-ci-robot k8s-ci-robot added size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. labels Dec 23, 2025
@nmn3m nmn3m force-pushed the kep-5677-dra-resource-availability-visibility branch from ca95081 to d9ac678 Compare December 29, 2025 23:26
@nmn3m nmn3m marked this pull request as ready for review December 29, 2025 23:31
@k8s-ci-robot k8s-ci-robot removed the do-not-merge/work-in-progress Indicates that a PR should not merge because it is a work in progress. label Dec 29, 2025
@k8s-ci-robot
Copy link
Contributor

@nmn3m: GitHub didn't allow me to request PR reviews from the following users: kubernetes/sig-scheduling, kubernetes/sig-node, kubernetes/sig-cli, kubernetes/wg-device-management.

Note that only kubernetes members and repo collaborators can review this PR, and authors cannot review their own PRs.

Details

In response to this:

/cc @kubernetes/sig-scheduling
/cc @kubernetes/sig-node
/cc @kubernetes/sig-cli
/cc @kubernetes/wg-device-management

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

@nmn3m nmn3m force-pushed the kep-5677-dra-resource-availability-visibility branch from d9ac678 to 495b6cb Compare December 29, 2025 23:36
@nmn3m
Copy link
Member Author

nmn3m commented Dec 29, 2025

/cc @johnbelamaric
/cc @pohly

@nmn3m
Copy link
Member Author

nmn3m commented Dec 29, 2025

/cc @kubernetes/sig-cli-kubectl-maintainers

@mortent
Copy link
Member

mortent commented Jan 6, 2026

/wg device-management

@k8s-ci-robot k8s-ci-robot added the wg/device-management Categorizes an issue or PR as relevant to WG Device Management. label Jan 6, 2026
@pohly pohly moved this from 🆕 New to 👀 In review in Dynamic Resource Allocation Jan 7, 2026
Copy link
Member

@johnbelamaric johnbelamaric left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

First pass, this is looking really really good to me so far

@nmn3m nmn3m force-pushed the kep-5677-dra-resource-availability-visibility branch from 495b6cb to fdbf949 Compare January 14, 2026 22:37
@nmn3m
Copy link
Member Author

nmn3m commented Feb 5, 2026

Is there an existing pattern for kubectl to reach KCM endpoints?

I don't think so.

Should we reconsider the out-of-tree aggregated API server approach to avoid this connectivity challenge?

That would be the more standard approach, if someone was to built this out-of-tree. We look for in-tree, out-of-the-box support. It might still be the best solution, though.

Any other approaches I should explore?

We could add something directly to the apiserver. I am not sure how I feel about that. It adds some overhead there even when not in use and it's a fairly central component where we don't want to risk causing crashes.

  1. If we go with apiserver, what would be the preferred pattern?

    • A new endpoint under /apis/resource.k8s.io/?
    • Something else?
  2. For out-of-tree approach, would it make sense to start there and potentially graduate
    to in-tree later if there's demand?

@johnbelamaric
Copy link
Member

@liggitt WDYT?

An always available, in-tree approach is preferable, but I am not sure there's a great option for that. Here's what I could think of:

  1. A "request" is made by creating a ResourcePool object, or maybe it's even called something like "ResourcePoolStatusRequest" or something. A controller runs in KCM that sees that request, makes the calculation, and writes the result to the object's status, where it can be observed by the user. It is a one-time operation with a timestamp. To recalculate, the user has to delete and recreate the object. The object probably should be cluster scoped.
  2. A specialized API endpoint built into API server. I suspect this is a no-go. Jordan, is there any precedent for that?
  3. A specialized API endpoint in KCM that is then exposed via an aggregated API configuration. Jordan, any precedent?

The first one seems promising if we want to do this in-tree. I actually think it's fine, and there is precedent for similar "imperative operations through declarative APIs" with things like CSR and even the way device taints with "None" effect works. It gives us the ability to controller permissions on the object, too.

For out-of-tree (could be in k-sigs), we could implement JUST a kubectl plugin and rely on user permissions, to start. And add in some aggregated API server later, if we see the need.

The advantage of in-tree: always available and in-sync with K8s releases, all users can depend on it. Disadvantage: locked to K8s release cycle.

Advantage of out-of-tree: we can implement it independently of the release cycle.

My preference: the first in-tree option.

@nmn3m nmn3m force-pushed the kep-5677-dra-resource-availability-visibility branch from 5708e86 to 4949759 Compare February 7, 2026 13:06
@k8s-ci-robot k8s-ci-robot added size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. and removed size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. labels Feb 7, 2026
@nmn3m nmn3m force-pushed the kep-5677-dra-resource-availability-visibility branch from 4949759 to 09cfcc3 Compare February 7, 2026 13:13
@nmn3m
Copy link
Member Author

nmn3m commented Feb 7, 2026

@johnbelamaric , Thanks for the detailed design options! I've updated the KEP to implement your first
suggestion - the CSR-like pattern with ResourcePoolStatusRequest.

@nmn3m nmn3m force-pushed the kep-5677-dra-resource-availability-visibility branch from 09cfcc3 to 720ae52 Compare February 7, 2026 13:21
@nmn3m nmn3m requested review from mortent and pohly February 7, 2026 13:22
@nmn3m
Copy link
Member Author

nmn3m commented Feb 7, 2026

/cc @kannon92

@k8s-ci-robot k8s-ci-robot requested a review from kannon92 February 7, 2026 13:25
Signed-off-by: Nour <nurmn3m@gmail.com>
@nmn3m nmn3m force-pushed the kep-5677-dra-resource-availability-visibility branch from 720ae52 to b5ca902 Compare February 8, 2026 19:22
Copy link
Contributor

@kannon92 kannon92 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please check over the questionaire. There are missing questions.


Items marked with (R) are required *prior to targeting to a milestone / release*.

- [ ] (R) Enhancement issue in release milestone, which links to KEP dir in
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please make sure to mark this off as you go.


| Risk | Mitigation |
|------|------------|
| Request accumulation in etcd | Document cleanup; consider TTL for Beta |
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If we don't get TTL should we consider ways to limit the number of ResourcePoolStatusRequests?

I worry that this will be an informational API that could be useful for scheduling decisions or even information for quota management solutions like Kueue. TTL would be useful but we should also consider


#### RBAC

Access is controlled via standard RBAC on the ResourcePoolStatusRequest API:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would the default admin permissions allow access to this resource? Or would cluster admins need to also add these ClusterRoles?

5. Validation errors detected
6. RBAC enforced correctly

#### e2e tests
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should there also be e2e tests for kubectl?

- Older kubectl can still create/read objects (standard API)
- No special version skew concerns

## Production Readiness Review Questionnaire
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you please check this questionaire and make sure to follow the template?

Missing Questions

  1. "Can enabling / using this feature result in resource exhaustion of some node resources (PIDs, sockets, inodes, etc.)?"
    This entire question is absent from the Scalability section (after line 809).

Incomplete Answers

  1. "How can someone using this feature know that it is working for their instance?" (line 754-756)
    The template expects structured responses using checkboxes:
    - [ ] Events — with Event Reason
    - [ ] API .status — with Condition name / Other field
    - [ ] Other

The KEP just has a plain text answer. It should at minimum check off API .status with Condition name: Complete.
3. "What are the SLIs (Service Level Indicators)?" (line 764-767)
The template expects structured responses:
- [ ] Metrics — with Metric name, Aggregation method, Components exposing the metric
- [ ] Other

The KEP lists metric names but doesn't specify which component exposes them (should be kube-controller-manager), and doesn't use the
template checkbox format.
4. "Does this feature depend on any specific services running in the cluster?" (line 776-778)
The template expects a structured table/list per dependency with fields like: name, usage, impact of unavailability, impact of degraded
performance, whether it can operate with a degraded/unavailable dependency. The KEP just gives a brief bullet list.
5. "Will enabling / using this feature result in any new API calls?" (line 783-786)
The template expects specifics: API call type, estimated throughput, originating component. The KEP gives a general description without
these details.
6. "Will enabling / using this feature result in introducing new API types?" (line 788-789)
The template expects: API type, supported operations, estimated count. Only the type name is given.
7. "What are other known failure modes?" (line 819-822)
The template expects structured entries with: failure mode description, detection method, mitigations, diagnostics, testing (is it covered
by e2e tests?). The KEP uses a brief bullet list.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I followed the rules and fixed them. Thanks for detailed feedback.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

thanks looks great.

@github-project-automation github-project-automation bot moved this from Backlog to Needs Review in SIG Scheduling Feb 8, 2026
@k8s-ci-robot k8s-ci-robot added size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. and removed size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. labels Feb 8, 2026
…alidation

Signed-off-by: Nour <nurmn3m@gmail.com>
@nmn3m nmn3m force-pushed the kep-5677-dra-resource-availability-visibility branch from e435e31 to 1b123f5 Compare February 8, 2026 21:46
@nmn3m nmn3m requested a review from kannon92 February 8, 2026 21:48
- "@liggitt"
- "@pohly"
approvers:
- TBD
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@haircommander do you know who on sig-node signed up to approve this?

- Other field: `status.observationTime` is set when calculation is performed
- [ ] Other (Alarm, К8s resources status)

###### What are the reasonable SLOs (Service Level Objectives) for the enhancement?
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

https://github.com/kubernetes/community/blob/master/sig-scalability/slos/slos.md#kubernetes-slisslos

I think you are supposed to answer this with respect to kube-controller-manager SLI/SLO.

This isn't required for beta so I won't block the approval on this.

Copy link
Contributor

@kannon92 kannon92 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

/approve

For PRR.
This is a very well thoughout proposal for alpha.

Thank you!

@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: kannon92, nmn3m
Once this PR has been reviewed and has the lgtm label, please ask for approval from mrunalp. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/kep Categorizes KEP tracking issues and PRs modifying the KEP directory sig/node Categorizes an issue or PR as relevant to SIG Node. sig/scheduling Categorizes an issue or PR as relevant to SIG Scheduling. size/XXL Denotes a PR that changes 1000+ lines, ignoring generated files. wg/device-management Categorizes an issue or PR as relevant to WG Device Management.

Projects

Status: Backlog
Status: 👀 In review
Status: Needs Review

Development

Successfully merging this pull request may close these issues.

9 participants