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
@@ -128,11 +130,11 @@ checklist items _must_ be updated for the enhancement to be released.
128
130
129
131
Items marked with (R) are required *prior to targeting to a milestone / release*.
130
132
131
-
-[] (R) Enhancement issue in release milestone, which links to KEP dir in [kubernetes/enhancements] (not the initial KEP PR)
132
-
-[] (R) KEP approvers have approved the KEP status as `implementable`
133
-
-[] (R) Design details are appropriately documented
134
-
-[] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input (including test refactors)
135
-
-[] e2e Tests for all Beta API Operations (endpoints)
133
+
-[x] (R) Enhancement issue in release milestone, which links to KEP dir in [kubernetes/enhancements] (not the initial KEP PR)
134
+
-[x] (R) KEP approvers have approved the KEP status as `implementable`
135
+
-[x] (R) Design details are appropriately documented
136
+
-[x] (R) Test plan is in place, giving consideration to SIG Architecture and SIG Testing input (including test refactors)
137
+
-[] e2e Tests for all Beta API Operations (endpoints)
136
138
-[ ] (R) Ensure GA e2e tests for meet requirements for [Conformance Tests](https://github.com/kubernetes/community/blob/master/contributors/devel/sig-architecture/conformance-tests.md)
137
139
-[ ] (R) Minimum Two Week Window for GA e2e tests to prove flake free
138
140
-[] (R) Graduation criteria is in place
@@ -159,7 +161,7 @@ to allow suspending jobs to control when the Pods of a Job get created by contro
159
161
This was proposed as a primitive to allow a higher-level queue controller to implement
160
162
job queuing: the queue controller unsuspends the job when resources become available.
161
163
162
-
To complement the above capability, a queue controller may also want to control the
164
+
To complement the above capability, a secondary controller may also want to control the
163
165
resource requirements of a job based on current cluster capacity or resource availability.
164
166
For example, it may want to adjust CPU, memory, and GPU requests/limits based on available
165
167
node capacity, allocate specific extended resources like TPUs or FPGAs, optimize resource
@@ -168,7 +170,7 @@ priority and cluster load.
168
170
169
171
This is a proposal to relax update validation on suspended jobs to allow mutating
170
172
resource specifications in the job's pod template, specifically CPU, memory, GPU,
171
-
and other extended resource requests and limits. This enables a higher-level queue
173
+
and other extended resource requests and limits. This enables a higher-level
172
174
controller to optimize resource allocation before un-suspending a job based on
173
175
current cluster conditions and resource availability.
174
176
@@ -187,11 +189,10 @@ there's no way to optimize them based on actual cluster conditions when the job
187
189
ready to run.
188
190
189
191
Adding the ability to mutate a job's resource requirements while it's suspended gives
190
-
a queue controller the ability to optimize resource allocation based on real-time
192
+
a controller the ability to optimize resource allocation based on real-time
191
193
cluster conditions, improve overall cluster utilization, and ensure jobs are sized
192
194
appropriately for current capacity constraints.
193
195
194
-
195
196
### Goals
196
197
197
198
- Allow mutating CPU, memory, GPU, and extended resource requests and limits of a container within a PodTemplate of a suspended jobs.
@@ -207,6 +208,7 @@ appropriately for current capacity constraints.
207
208
- Allow mutating other job specifications beyond container resource requirements.
208
209
- Support in-place pod resource updates (this is covered by separate KEPs).
209
210
- Allow mutating of Pod Resources.
211
+
- Allow mutating of ResourceClaims.
210
212
211
213
## Proposal
212
214
@@ -262,6 +264,15 @@ We will allow updates to the following fields in container specifications within
262
264
-`resources.limits.memory`
263
265
-`resources.limits.*` (for extended resources like `nvidia.com/gpu`, `amd.com/gpu`, `tpu-v4` etc.)
264
266
267
+
### DRA Support
268
+
269
+
DRA does not allow changing ResourceClaimTemplates once they are created.
270
+
At the moment, relaxing mutability constraits of ResourceClaimTemplates or ResourceClaims is not in scope.
271
+
To add support for this feature with DRA, the recommendation is to recreate ResourceClaimTemplates that match the
272
+
desired resources.
273
+
274
+
One does not have to modify claims in the PodTemplate so one can still assume claims are immutable also.
275
+
265
276
### Test Plan
266
277
267
278
- Unit and integration tests verifying that:
@@ -531,7 +542,20 @@ This allows for more mutability of Jobs, particularly around resource specificat
531
542
532
543
## Alternatives
533
544
534
-
NA
545
+
546
+
### Delete and Recreate Jobs
547
+
548
+
One option is to keep this immutability and any modification of a Job should require a delete and create.
549
+
550
+
If there is a higher level controller controlling this Jobs with its own Owner References, then deletion is required on all resources that this job
551
+
originally referenced.
552
+
This is a common use case for JobSet which manages multiple jobs and services.
553
+
Recreation would require deleting all existing jobs on an update if JobSet wanted to add support on updating JobTemplates while suspended.
554
+
555
+
In a multicluster scenario, deletion and recreation may require dispatching amoung different clusters.
556
+
Think of a scenario where you have 1 hub cluster and many worker clusters. If uses the hub to dispatch to a worker cluster, then this would require one to delete
557
+
the Job and propogate that deletion to the clusters. A patch is only a single operation so this would be faster.
0 commit comments