You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: keps/sig-scheduling/5075-dra-consumable-capacity/README.md
+13-11Lines changed: 13 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -95,10 +95,10 @@ SIG Architecture for cross-cutting KEPs).
95
95
96
96
Items marked with (R) are required *prior to targeting to a milestone / release*.
97
97
98
-
-[] (R) Enhancement issue in release milestone, which links to KEP dir in [kubernetes/enhancements] (not the initial KEP PR)
99
-
-[] (R) KEP approvers have approved the KEP status as `implementable`
100
-
-[] (R) Design details are appropriately documented
101
-
-[] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input (including test refactors)
98
+
-[x] (R) Enhancement issue in release milestone, which links to KEP dir in [kubernetes/enhancements] (not the initial KEP PR)
99
+
-[x] (R) KEP approvers have approved the KEP status as `implementable`
100
+
-[x] (R) Design details are appropriately documented
101
+
-[x] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input (including test refactors)
102
102
-[ ] e2e Tests for all Beta API Operations (endpoints)
103
103
-[ ] (R) Ensure GA e2e tests meet requirements for [Conformance Tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md)
104
104
-[ ] (R) Minimum Two Week Window for GA e2e tests to prove flake free
@@ -135,7 +135,9 @@ To achieve this, this KEP introduces
135
135
- a capacity-aware scheduling mechanism that allows limiting or guaranteeing the capacity of devices among the resource claims (or requests) those are sharing,
136
136
- a new capacity requirement field in the device request of the resource claim,
137
137
- a new consumed capacity field in the allocation result of the resource claim,
138
-
- a method to associate the allocated device status to the allocation result in the resource claim,
138
+
- a method to associate the allocated device status to the allocation result in the resource claim.
139
+
140
+
With those in place, a resource claim with multiple requests might allocate the same device multiple times. This may or may not be desired, so this KEP also introduces:
139
141
- a distinct attribute constraint to prevent allocating the same shareable device in the same claim multiple times.
140
142
141
143
Relations to other KEPs:
@@ -165,7 +167,7 @@ In other words, the device capacity allocation is determined by the user's claim
165
167
166
168
- Define driver-specific attributes and configs (such as CNI parameter config).
167
169
- Support network security policy.
168
-
-Supports aggregated resource consumption where multiple devices are allocated to satisfy a single capacity request.
170
+
-Support aggregated resource consumption where multiple devices are allocated to satisfy a single capacity request.
169
171
This is related to [the comment about `distinctAttributes`](https://github.com/kubernetes/enhancements/pull/5104#discussion_r1943835445).
170
172
- Support an extended use case where the resource guaranteeing behavior is determined by the first user request.
171
173
For example, if the first request does not require a guarantee, the resource remains unguaranteed.
@@ -212,7 +214,7 @@ users specifies their required guaranteed bandwidth. Otherwise, the default valu
212
214
**Mitigation:**
213
215
- To preserve the original behavior during this transition, the driver should set the default consumed capacity to the maximum value. This ensures consistency with the previous non-shareable configuration.
214
216
- The existing allocation result, which has no share ID (as it was previously a non-shareable device), will be included in the allocated list
215
-
and cannot be reallocated to another pod during the scheduling process.
217
+
and ensures that the device cannot be allocated for another resource claim during the scheduling process.
216
218
217
219
- When a driver changes a capacity from non-consumable to consumable for a device that is already shareable, the behavior of resource claims changes.
218
220
While the capacity is non-consumable, a resource claim for that specific capacity will always guarantee a value of zero.
@@ -233,7 +235,7 @@ For examples of device driver migration, see the [Examples](#examples) section b
233
235
This enhancement introduces a `allowMultipleAllocations` field within the `Device` of the ResourceSlice
234
236
to mark whether the device is shareable among multiple resource claims (or requests).
235
237
The multi-allocatable device can be assigned to more than one request if it satisfies the selection criteria and constraints.
236
-
The select condition `device.allowMultipleAllocations == true/false`is used to identify to select the device with a `allowMultipleAllocations` property or not.
238
+
The select condition `device.allowMultipleAllocations == true/false`can be used to select the device with a `allowMultipleAllocations` property or not in a CEL selector.
237
239
238
240
The enhancement also adds a `SharingPolicy` field to `DeviceCapacity`.
239
241
This field specifies how the capacity can be shared between different requests.
@@ -301,11 +303,11 @@ type DeviceCapacity struct {
301
303
302
304
// CapacitySharingPolicy defines how requests consume the available capacity.
303
305
// A policy must have a default value to be applied when no value is explicitly provided.
304
-
//ValidSharingValues can either specify a range of valid values or a discrete set of them.
306
+
//It can either specify a range of valid values or a discrete set of them.
305
307
// Exactly one of them must be defined.
306
308
// The default value must be a valid value.
307
309
typeCapacitySharingPolicystruct {
308
-
// Default specifies the default capacity to be used for a consumption request
310
+
// Default specifies the default capacity to be used for a consumption request.
309
311
//
310
312
// +required
311
313
Default resource.Quantity
@@ -865,7 +867,7 @@ implementing this enhancement to ensure the enhancements have also solid foundat
865
867
- can gather consumed capacity from allocated resource claims
866
868
- can add/remove consumed capacity of allocating devices
867
869
- can round up and compute user-requesting minimum capacity according to sharing policy range and chunk size
868
-
- can check sharing policy violation
870
+
- requested capacity for non-consumable capacity acts like a `>=` filter
869
871
870
872
**Distinct Attribute**
871
873
- can prevent allocating the same device in the same request with a distinct constraint
0 commit comments