Skip to content
KEP Brain

KEP-5981keps/sig-scheduling/5981-dra-sharing-affinity

DRA Sharing Affinity

implementablealphasig-schedulinglatest v1.38
This KEP proposes an extension to Dynamic Resource Allocation (DRA) that allows the kube-scheduler to handle resources that are conditionally fungible. KEP-5075 (Consumable Capacity) introduced the ability to track numerical capacity (e.g., 16 slots of a NIC) and share devices across multiple claims via allowMultipleAllocations. However, it assumes all clai… Full summary

This KEP proposes an extension to Dynamic Resource Allocation (DRA) that allows the kube-scheduler to handle resources that are conditionally fungible. KEP-5075 (Consumable Capacity) introduced the ability to track numerical capacity (e.g., 16 slots of a NIC) and share devices across multiple claims via allowMultipleAllocations. However, it assumes all claims are fungible—any claim can share the device with any other claim. Real-world hardware is often modal (i.e., once partially allocated, it must operate in a single configuration mode for all of its current consumers): the device requires all subsequent consumers to share a specific configuration. For example: - Multi-pod NIC sharing: A network DRA driver shares a NIC across 16 pods, but all pods must belong to the same subnet. Once the first pod configures the NIC for Subnet A, the remaining 15 slots are restricted to Subnet A. - FPGA bitstream sharing: An FPGA can serve multiple inference pods, but all must use the same bitstream. Once bitstream-ml-v2 is loaded, other pods needing bitstream-crypto-v1 must use a different FPGA. This KEP introduces a sharingAffinity field on ResourceSlice.spec that allows drivers to declare, via CEL expressions, how to extract the affinity keys that constrain sharing from the driver's existing opaque device configuration. sharingAffinity is published as pool-level metadata in dedicated slices within the pool — a slice that carries sharingAffinity does not carry devices, and vice versa — mirroring the established sharedCounters (KEP-4815) pattern. A pool may publish one or more such slices; the scheduler takes the union of their extractors, so the schema declaration stays scoped to the pool even when the pool is chunked across many ResourceSlices. On the claim side, there is no API change — workloads continue to author their driver's opaque config exactly as they do today. Whe

Facts

Approvers
@dom4ha
PRR approvers
@johnbelamaricalpha
Tracking issue
#5981(opens GitHub in a new tab) openmilestone v1.38sig/schedulingstage/alphatracked/yeslead-opted-inwg/device-management
Milestones
alpha v1.38beta v1.39stable v1.41
Participating SIGs
sig-node
Feature gates
DRASharingAffinity
Created / last updated
2026-03-30 / 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.