Skip to content

Commit 59ea97c

Browse files
committed
update PRR review
1 parent 23afbb0 commit 59ea97c

File tree

1 file changed

+20
-14
lines changed
  • keps/sig-apps/2804-consolidate-workload-controllers-status

1 file changed

+20
-14
lines changed

keps/sig-apps/2804-consolidate-workload-controllers-status/README.md

Lines changed: 20 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -165,13 +165,13 @@ The following table is indicating what conditions are currently available (`X`)
165165
| CronJob | - | - | - | - | - | - | - | - |
166166

167167
#### Progressing
168-
Kubernetes marks a DaemonSet or Stateful as `progressing` when:
168+
Individual workload controllers mark a DaemonSet or Stateful as `progressing` when:
169169
- The DaemonSet or StatefulSet is created
170170
- The DaemonSet or StatefulSet is scaling up or scaling down
171171
- New DaemonSet or StatefulSet pods become Ready or available
172172

173173
#### 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:
175175

176176
- 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.
177177
- 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
192192
This also needs some code refactoring of existing conditions for Deployment controller.
193193

194194
#### 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.
196196
- This could be confusing in ReplicaSets a bit since Deployment could get available sooner than its ReplicaSet due `maxUnavailable`.
197197
- 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.
198198

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.
200200

201201
#### Batch Workloads Conditions: Waiting & Running
202202

@@ -206,11 +206,11 @@ Batch workloads behaviour does not properly map to the other workloads that are
206206
It also resets on suspension, so its behaviour is a bit different.
207207

208208

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:
210210

211211
- There are no Pods with phase `Running` and there is at least one Pod with phase `Pending`.
212212

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`.
214214

215215
This KEP does not introduce CronJob conditions as it is difficult to define conditions that would describe CronJob behaviour in useful manner.
216216
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
263263
we will set new conditions on the mentioned workloads.
264264
- Downgrades
265265
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.
267267

268268
### Version Skew Strategy
269269

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.
271275

272276
## Production Readiness Review Questionnaire
273277

@@ -288,7 +292,9 @@ No. The default behavior won't change. Only new conditions will be added with no
288292

289293
###### What happens if we reenable the feature if it was previously rolled back?
290294

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.
292298

293299
###### Are there any tests for feature enablement/disablement?
294300

@@ -326,9 +332,9 @@ Yes, unit, integration and e2e tests for feature enabled, disabled
326332
### Scalability
327333

328334
###### 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.
332338

333339
###### Will enabling / using this feature result in introducing new API types?
334340

@@ -341,11 +347,11 @@ No.
341347
Yes.
342348
API type(s): DaemonSet, Deployment, Job, ReplicaSet, ReplicationController, StatefulSet
343349
- 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.
345351

346352
###### Will enabling / using this feature result in increasing time taken by any operations covered by existing SLIs/SLOs?
347353

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.
349355

350356
###### Will enabling / using this feature result in non-negligible increase of resource usage (CPU, RAM, disk, IO, ...) in any components?
351357

0 commit comments

Comments
 (0)