@@ -48,7 +48,7 @@ Items marked with (R) are required *prior to targeting to a milestone / release*
48
48
- [X] (R) Graduation criteria is in place
49
49
- [X] (R) Production readiness review completed
50
50
- [X] (R) Production readiness review approved
51
- - [ ] "Implementation History" section is up-to-date for milestone
51
+ - [X ] "Implementation History" section is up-to-date for milestone
52
52
- [X] User-facing documentation has been created in [ kubernetes/website] , for publication to [ kubernetes.io]
53
53
- [X] Supporting documentation—e.g., additional design documents, links to mailing list discussions/SIG meetings, relevant PRs/issues, release notes
54
54
@@ -162,8 +162,9 @@ type LeaderMigrationConfiguration struct {
162
162
LeaderName string ` json:"leaderName"`
163
163
164
164
// ResourceLock indicates the resource object type that will be used to lock
165
- // Must be either "leases" or "endpoints", defaults to 'leases'
166
- // No other types (e.g. "endpointsleases" or "configmapsleases") are allowed
165
+ // Must be "leases", default to "leases". This field is retained only for
166
+ // compatibility with previous releases.
167
+ // This field will be removed in stable (v1) API.
167
168
ResourceLock string
168
169
169
170
// ControllerLeaders contains a list of migrating leader lock configurations
@@ -235,7 +236,7 @@ The default LeaderMigrationConfiguration can be represented as follows:
235
236
236
237
``` yaml
237
238
kind : LeaderMigrationConfiguration
238
- apiVersion : controllermanager.config.k8s.io/v1alpha1
239
+ apiVersion : controllermanager.config.k8s.io/v1
239
240
leaderName : cloud-provider-extraction-migration
240
241
resourceLock : leases
241
242
controllerLeaders :
@@ -292,9 +293,10 @@ unsetting the `--enable-leader-migration` flag.
292
293
- test resource registration, parsing, and validation against the Schema APIs
293
294
- test interactions with the leader election APIs
294
295
- E2E Testing
295
- - In a single-node control plane with leader election setting , test control plane upgrade, assert controller managers
296
+ - In a replicated control plane, test control plane upgrade, assert controller managers
296
297
become health and ready after upgrade
297
- - In a multi-node control plane setting, test control plane upgrade, assert availability throughout the upgrade
298
+ - In a replicated control plane, test control plane upgrade, assert no controllers
299
+ become active in both controller managers.
298
300
299
301
# ## Graduation Criteria
300
302
@@ -305,7 +307,10 @@ The default migration configuration is implemented and tested.
305
307
306
308
# #### Beta -> GA Graduation
307
309
308
- Leader migration configuration works on all in-tree cloud providers.
310
+ - Leader Migration works on all in-tree cloud providers that require migration.
311
+ - Leader Migration has an automated upgrade test on a replicated control plane, with Leader Migration enabled, of the following cases
312
+ - Upgrade from KCM only to KCM + CCM
313
+ - Rollback from KCM + CCM to KCM only
309
314
310
315
# ## Upgrade / Downgrade Strategy
311
316
@@ -350,7 +355,8 @@ disabled.
350
355
351
356
# ##### How can a rollout or rollback fail? Can it impact already running workloads?
352
357
353
- The rollout may fail if the configuration file does not represent correct controller-to-manager.
358
+ The rollout may fail if the configuration file does not represent correct controller-to-manager assignment
359
+ or configurations mismatch between controller managers.
354
360
This can cause controllers referred in the configuration file to either be unavailable or run in multiple instances.
355
361
356
362
The rollback may fail if the leader election of the controller manager is not properly configured.
@@ -383,6 +389,8 @@ N/A. This feature is never used by any user workloads.
383
389
- The `Lease` resource used in the migration can be watched for transition of leadership and timing information.
384
390
- logs and metrics can directly indicate the status of migration.
385
391
392
+ Note that this feature is intended for cluster administrators, who should have access to metrics during the upgrade.
393
+
386
394
# ##### What are the reasonable SLOs (Service Level Objectives) for the enhancement?
387
395
388
396
Leader Migration is designed to ensure availability of controller managers during upgrade,
@@ -391,14 +399,11 @@ and this feature will not affect SLOs of controller managers.
391
399
# ##### What are the SLIs (Service Level Indicators) an operator can use to determine the health of the service?
392
400
393
401
- [X] Metrics
394
- - leader_active
395
- - other per -controller availability metrics.
402
+ - per-controller health checks in both controller managers.
403
+ - Components exposing the metric : kube -controller-manager, cloud-controller-manager
396
404
397
405
# ##### Are there any missing metrics that would be useful to have to improve observability of this feature?
398
406
399
- It would help if every controller that the controller manager hosts expose metrics about their availability.
400
- However, per-controller metrics are out of scope of this KEP.
401
-
402
407
Status of the migration lease, provided by the API server, can help observe the transition of holders
403
408
if exposed as resource metrics.
404
409
@@ -422,7 +427,7 @@ If the service accounts are not granted access to the lease resources, the RBAC
422
427
423
428
# ##### Will enabling / using this feature result in introducing new API types?
424
429
425
- Type : ` controllermanager.config.k8s.io/v1alpha1 .LeaderMigrationConfiguration`
430
+ Type : ` controllermanager.config.k8s.io/v1 .LeaderMigrationConfiguration`
426
431
This resource is only for configuration file parsing. The resource should never reach the API server.
427
432
428
433
# ##### Will enabling / using this feature result in any new calls to the cloud provider?
466
471
- 12-28-2020 Parsing and validation merged as # 96226
467
472
- 03-10-2021 Implementation for alpha state completed, released in 1.21.
468
473
- 03-30-2021 User guide published as kubernetes/website#26970
469
- - 05-11-2021 KEP updated to target beta.
474
+ - 05-11-2021 KEP updated to target beta.
475
+ - 01-21-2022 KEP updated to target GA.
476
+ - 01-25-2022 Testing and monitoring revised for GA.
470
477
471
478
# # Drawbacks
472
479
0 commit comments