@@ -74,24 +74,11 @@ Items marked with (R) are required *prior to targeting to a milestone / release*
74
74
75
75
## Summary
76
76
77
- <!--
78
- This section is incredibly important for producing high-quality, user-focused
79
- documentation such as release notes or a development roadmap. It should be
80
- possible to collect this information before implementation begins, in order to
81
- avoid requiring implementors to split their attention between writing release
82
- notes and implementing the feature itself. KEP editors and SIG Docs
83
- should help to ensure that the tone and content of the `Summary` section is
84
- useful for a wide audience.
85
-
86
- A good summary is probably at least a paragraph in length.
87
-
88
- Both in this section and below, follow the guidelines of the [documentation
89
- style guide]. In particular, wrap lines to a reasonable length, to make it
90
- easier for reviewers to cite specific portions, and to minimize diff churn on
91
- updates.
92
-
93
- [documentation style guide]: https://github.com/kubernetes/community/blob/master/contributors/guide/style-guide.md
94
- -->
77
+ In this KEP we propose exposing a simple chunking mechanism to allow large API responses
78
+ to be broken into consistent partial responses. Clients that can tolerate such behavior
79
+ would be able to opt-in for it by specifying a desired maximum number of results to return
80
+ in a ` LIST ` call. This enhancement is critical for large clusters to significantly improve
81
+ variations in peak memory use on the server and reduce long tail request latency.
95
82
96
83
## Motivation
97
84
@@ -137,17 +124,12 @@ Relevant issues:
137
124
138
125
### Goals
139
126
140
- <!--
141
- List the specific goals of the KEP. What is it trying to achieve? How will we
142
- know that this has succeeded?
143
- -->
127
+ - Expose List API chunking mechanism as opt-in for clients
144
128
145
129
### Non-Goals
146
130
147
- <!--
148
- What is out of scope for this KEP? Listing non-goals helps to focus discussion
149
- and make progress.
150
- -->
131
+ - Force all clients to use pagination for now
132
+
151
133
152
134
## Proposal
153
135
@@ -165,17 +147,7 @@ without changing the semantics of the original request.
165
147
166
148
### Risks and Mitigations
167
149
168
- <!--
169
- What are the risks of this proposal, and how do we mitigate? Think broadly.
170
- For example, consider both security and how this will impact the larger
171
- Kubernetes ecosystem.
172
-
173
- How will security be reviewed, and by whom?
174
-
175
- How will UX be reviewed, and by whom?
176
-
177
- Consider including folks who also work outside the SIG or subproject.
178
- -->
150
+ - Security implications of returning a key in the continue token are discussed below
179
151
180
152
## Design Details
181
153
@@ -388,119 +360,42 @@ specify the parts of the namespace / name keyspace they wish to range over (pagi
388
360
389
361
### Test Plan
390
362
391
- <!--
392
- **Note:** *Not required until targeted at a release.*
393
-
394
- Consider the following in developing a test plan for this enhancement:
395
- - Will there be e2e and integration tests, in addition to unit tests?
396
- - How will it be tested in isolation vs with other components?
397
-
398
- No need to outline all of the test cases, just the general strategy. Anything
399
- that would count as tricky in the implementation, and anything particularly
400
- challenging to test, should be called out.
401
-
402
- All code is expected to have adequate tests (eventually with coverage
403
- expectations). Please adhere to the [Kubernetes testing guidelines][testing-guidelines]
404
- when drafting this test plan.
405
-
406
- [testing-guidelines]: https://git.k8s.io/community/contributors/devel/sig-testing/testing.md
407
- -->
363
+ - unit tests for the pagination logic in etcd3 client
364
+ - integration tests checking valid and invalid combinations of limit and continue both
365
+ with watchcache enabled and disabled
366
+ - e2e tests verifying that clients opting in for chunking can retrieve consistent
367
+ paginated results
408
368
409
369
### Graduation Criteria
410
370
411
- <!--
412
- **Note:** *Not required until targeted at a release.*
413
-
414
- Define graduation milestones.
415
-
416
- These may be defined in terms of API maturity, [feature gate] graduations, or as
417
- something else. The KEP should keep this high-level with a focus on what
418
- signals will be looked at to determine graduation.
419
-
420
- Consider the following in developing the graduation criteria for this enhancement:
421
- - [Maturity levels (`alpha`, `beta`, `stable`)][maturity-levels]
422
- - [Feature gate][feature gate] lifecycle
423
- - [Deprecation policy][deprecation-policy]
424
-
425
- Clearly define what graduation means by either linking to the [API doc
426
- definition](https://kubernetes.io/docs/concepts/overview/kubernetes-api/#api-versioning)
427
- or by redefining what graduation means.
428
-
429
- In general we try to use the same stages (alpha, beta, GA), regardless of how the
430
- functionality is accessed.
431
-
432
- [feature gate]: https://git.k8s.io/community/contributors/devel/sig-architecture/feature-gates.md
433
- [maturity-levels]: https://git.k8s.io/community/contributors/devel/sig-architecture/api_changes.md#alpha-beta-and-stable-versions
434
- [deprecation-policy]: https://kubernetes.io/docs/reference/using-api/deprecation-policy/
435
-
436
- Below are some examples to consider, in addition to the aforementioned [maturity levels][maturity-levels].
437
-
438
371
#### Alpha
439
372
440
373
- Feature implemented behind a feature flag
441
374
- Initial e2e tests completed and enabled
442
375
443
376
#### Beta
444
377
445
- - Gather feedback from developers and surveys
446
- - Complete features A, B, C
447
- - Additional tests are in Testgrid and linked in KEP
378
+ - All tests are stable
379
+ - Scalability impact of the feature is asessed
448
380
449
381
#### GA
450
382
451
- - N examples of real-world usage
452
- - N installs
453
- - More rigorous forms of testing—e.g., downgrade tests and scalability tests
454
- - Allowing time for feedback
455
-
456
- **Note:** Generally we also wait at least two releases between beta and
457
- GA/stable, because there's no opportunity for user feedback, or even bug reports,
458
- in back-to-back releases.
459
-
460
- **For non-optional features moving to GA, the graduation criteria must include
461
- [conformance tests].**
462
-
463
- [conformance tests]: https://git.k8s.io/community/contributors/devel/sig-architecture/conformance-tests.md
464
-
465
- #### Deprecation
383
+ - e2e tests are graduated to conformance
466
384
467
- - Announce deprecation and support policy of the existing flag
468
- - Two versions passed since introducing the functionality that deprecates the flag (to address version skew)
469
- - Address feedback on usage/changed behavior, provided on GitHub issues
470
- - Deprecate the flag
471
- -->
472
385
473
386
### Upgrade / Downgrade Strategy
474
387
475
- <!--
476
- If applicable, how will the component be upgraded and downgraded? Make sure
477
- this is in the test plan.
478
-
479
- Consider the following in developing an upgrade/downgrade strategy for this
480
- enhancement:
481
- - What changes (in invocations, configurations, API use, etc.) is an existing
482
- cluster required to make on upgrade, in order to maintain previous behavior?
483
- - What changes (in invocations, configurations, API use, etc.) is an existing
484
- cluster required to make on upgrade, in order to make use of the enhancement?
485
- -->
388
+ API chunking will be an opt-in feature. Additionally, it's purely in-memory feature
389
+ so upgrade/downgrade is not a problem.
486
390
487
391
### Version Skew Strategy
488
392
489
- <!--
490
- If applicable, how will the component handle version skew with other
491
- components? What are the guarantees? Make sure this is in the test plan.
492
-
493
- Consider the following in developing a version skew strategy for this
494
- enhancement:
495
- - Does this enhancement involve coordinating behavior in the control plane and
496
- in the kubelet? How does an n-2 kubelet without this feature available behave
497
- when this feature is used?
498
- - Will any other components on the node change? For example, changes to CSI,
499
- CRI or CNI may require updating that component before the kubelet.
500
- -->
393
+ N/A
501
394
502
395
## Production Readiness Review Questionnaire
503
396
397
+ TODO: Fill this in
398
+
504
399
<!--
505
400
506
401
Production readiness reviews are intended to ensure that features merging into
@@ -833,22 +728,12 @@ For each of them, fill in the following information by copying the below templat
833
728
834
729
## Implementation History
835
730
836
- <!--
837
- Major milestones in the lifecycle of a KEP should be tracked in this section.
838
- Major milestones might include:
839
- - the `Summary` and `Motivation` sections being merged, signaling SIG acceptance
840
- - the `Proposal` section being merged, signaling agreement on a proposed design
841
- - the date implementation started
842
- - the first Kubernetes release where an initial version of the KEP was available
843
- - the version of Kubernetes where the KEP graduated to general availability
844
- - when the KEP was retired or superseded
845
- -->
731
+ - v1.8: Alpha release
732
+ - v1.9: Beta release
846
733
847
734
## Drawbacks
848
735
849
- <!--
850
- Why should this KEP _not_ be implemented?
851
- -->
736
+ N/A
852
737
853
738
## Alternatives
854
739
0 commit comments