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-apps/2804-consolidate-workload-controllers-status/README.md
+20-14Lines changed: 20 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -165,13 +165,13 @@ The following table is indicating what conditions are currently available (`X`)
165
165
| CronJob | - | - | - | - | - | - | - | - |
166
166
167
167
#### Progressing
168
-
Kubernetes marks a DaemonSet or Stateful as `progressing` when:
168
+
Individual workload controllers mark a DaemonSet or Stateful as `progressing` when:
169
169
- The DaemonSet or StatefulSet is created
170
170
- The DaemonSet or StatefulSet is scaling up or scaling down
171
171
- New DaemonSet or StatefulSet pods become Ready or available
172
172
173
173
#### Complete
174
-
Kubernetes marks a DaemonSet, ReplicaSet or Stateful as `complete` when it has the following characteristics:
174
+
Individual workload controllers mark a DaemonSet, ReplicaSet or Stateful as `complete` when it has the following characteristics:
175
175
176
176
- All of the replicas/pods associated with the DaemonSet or StatefulSet have been updated to the latest version you've specified, meaning any updates you've requested have been completed.
177
177
- All of the replicas/pods associated with the DaemonSet, ReplicaSet or StatefulSet are available.
@@ -192,11 +192,11 @@ Because of the number of changes that are involved as part of this effort, we ar
192
192
This also needs some code refactoring of existing conditions for Deployment controller.
193
193
194
194
#### Available
195
-
Kubernetes marks a ReplicaSet, StatefulSet as `available` when number of available replicas reaches number of replicas.
195
+
Individual workload controllers mark a ReplicaSet or StatefulSet as `available` when number of available replicas reaches number of replicas.
196
196
- This could be confusing in ReplicaSets a bit since Deployment could get available sooner than its ReplicaSet due `maxUnavailable`.
197
197
- Available replicas is alpha feature guarded by StatefulSetMinReadySeconds gate in StatefulSets, but the value defaults to ReadyReplicas when the feature gate is disabled so using it shouldn't be an issue.
198
198
199
-
Kubernetes marks DaemonSet as `available` when `numberUnavailable` or `desiredNumberScheduled - numberAvailable` is zero.
199
+
DaemonSet controller marks DaemonSet as `available` when `numberUnavailable` or `desiredNumberScheduled - numberAvailable` is zero.
@@ -206,11 +206,11 @@ Batch workloads behaviour does not properly map to the other workloads that are
206
206
It also resets on suspension, so its behaviour is a bit different.
207
207
208
208
209
-
Kubernetes marks a Job as `waiting` if one of the following conditions is true:
209
+
Job controller marks a Job as `waiting` if one of the following conditions is true:
210
210
211
211
- There are no Pods with phase `Running` and there is at least one Pod with phase `Pending`.
212
212
213
-
Kubernetes marks a Job as `running` if there is at least one Pod with phase `Running`.
213
+
Job controller marks a Job as `running` if there is at least one Pod with phase `Running`.
214
214
215
215
This KEP does not introduce CronJob conditions as it is difficult to define conditions that would describe CronJob behaviour in useful manner.
216
216
In case the user is interested if there are any running Jobs, `.status.active` field should be sufficient.
@@ -263,11 +263,15 @@ API validation, behavioral change of controllers with feature gate enabled and d
263
263
we will set new conditions on the mentioned workloads.
264
264
- Downgrades
265
265
When downgrading from a release with this feature, to a release without,
266
-
we will remove the extra conditions from workload objects.
266
+
we expect controllers not to remove stale conditions.
267
267
268
268
### Version Skew Strategy
269
269
270
-
None identified yet.
270
+
The update of extended conditions is always dependent on a `ExtendedWorkloadConditions` feature gate and not on the version as such.
271
+
If the feature gate is enabled, the workload controllers will update the extended conditions to reflect the current state.
272
+
In case feature gate is disabled, the workload controllers will remove the stale conditions.
273
+
In case the feature is missing in the workload controllers the conditions will not be removed and become stale.
274
+
This feature has no node runtime implications.
271
275
272
276
## Production Readiness Review Questionnaire
273
277
@@ -288,7 +292,9 @@ No. The default behavior won't change. Only new conditions will be added with no
288
292
289
293
###### What happens if we reenable the feature if it was previously rolled back?
290
294
291
-
The controllers start updating the new workload conditions again.
295
+
When we disable a feature gate the extended conditions are not expected to be present in the statuses of workload objects,
296
+
and thus should be removed by each responsible controller.
297
+
Once we reenable the feature gate, the controllers should create and start updating the new workload conditions again.
292
298
293
299
###### Are there any tests for feature enablement/disablement?
294
300
@@ -326,9 +332,9 @@ Yes, unit, integration and e2e tests for feature enabled, disabled
326
332
### Scalability
327
333
328
334
###### Will enabling / using this feature result in any new API calls?
329
-
Yes
330
-
- Update of DaemonSet, Job, ReplicaSet, ReplicationController, StatefulSet status
331
-
- Controllers could potentially make additional update calls when syncing the resources
335
+
No, the number of API calls will stay the same as we will reuse already existing status update calls.
336
+
This is because other fields in the status influence the conditions.
337
+
But the size of the patches in these calls will increase.
332
338
333
339
###### Will enabling / using this feature result in introducing new API types?
334
340
@@ -341,11 +347,11 @@ No.
341
347
Yes.
342
348
API type(s): DaemonSet, Deployment, Job, ReplicaSet, ReplicationController, StatefulSet
343
349
- Estimated increase in size:
344
-
-Add new conditions in Deployment, DaemonSet, Job, ReplicaSet, ReplicationController, StatefulSet status
350
+
-On average, we are going to add 1 condition per workload, approximately 100 bytes for each condition.
345
351
346
352
###### Will enabling / using this feature result in increasing time taken by any operations covered by existing SLIs/SLOs?
347
353
348
-
No.
354
+
No. We will be adding new statuses but this should not affect existing SLIs/SLOs as the logic should be part of the already existing flow of updating other status fields.
349
355
350
356
###### Will enabling / using this feature result in non-negligible increase of resource usage (CPU, RAM, disk, IO, ...) in any components?
0 commit comments