Skip to content

Commit e49b717

Browse files
authored
Merge pull request kubernetes#5006 from siyuanfoundation/compat-versions
KEP-4330: update minCompatibilityVersion range.
2 parents 3491aee + f9281db commit e49b717

File tree

1 file changed

+9
-8
lines changed
  • keps/sig-architecture/4330-compatibility-versions

1 file changed

+9
-8
lines changed

keps/sig-architecture/4330-compatibility-versions/README.md

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -276,8 +276,8 @@ release for features to settle in as is typically needed for rollback support.
276276
- In alpha we intend to support:
277277
- `--emulation-version` range of `binaryMinorVersion`..`binaryMinorVersion-1`
278278
- In beta, we intend to extend support to:
279-
- `--emulation-version` range of `binaryMinorVersion`..`binaryMinorVersion-1`
280-
- `--min-compatibility-version` to `binaryMinorVersion`..`binaryMinorVersion-1`
279+
- `--emulation-version` range of `binaryMinorVersion`..`binaryMinorVersion-3`
280+
- `--min-compatibility-version` to `emulationVersion`..`binaryMinorVersion-3`
281281

282282
### Non-Goals
283283

@@ -316,7 +316,8 @@ version be <= the kube-apiserver binary version, it must also be <= the
316316

317317
#### --min-compatibility-version
318318

319-
- Defaults to `binaryVersion-1` (matching current behavior)
319+
- Defaults to `emulationVersion-1` if `emulationVersion.GreaterThan(binaryVersion-3)` (matching current behavior in emulation mode),
320+
and defaults to `emulationVersion` if `emulationVersion.EqualTo(binaryVersion-3)` (because of the max version range we are supporting)
320321
- Must be <= `--emulation-version`
321322
- Must not be lower than the supported range of minor versions (see graduation
322323
criteria for ranges). If below the supported version range the binary will
@@ -338,7 +339,7 @@ rules be defined in terms of compatibility and emulation versions:
338339

339340
- kubectl:
340341
- Previously: `1.{binaryMinorVersion-1}`..`{binaryVersion+1}`
341-
- With this enhancement: `{minCompatibilityVersion-1}..{emulationVersion+1}`
342+
- With this enhancement: `{minCompatibilityVersion}..{emulationVersion+1}`
342343

343344
### Changes to Feature Gates
344345

@@ -599,11 +600,11 @@ for each API group. The StorageVersion changes across releases as API groups
599600
graduate through stability levels.
600601

601602
During upgrades and downgrades, the storage version is particularly important.
602-
To enable upgrades and rollbacks, the version selected for storage in etcd in
603-
version N must be (en/de)codable for k8s versions N-1 through N+1.
603+
To enable upgrades and rollbacks, pre compatibility version, the version selected for storage in etcd in
604+
version N must be (en/de)codable for k8s versions N-1 through N+1. With compatibility version, the version selected for storage in etcd for the combination of `EmulationVersion` and `MinCompatibilityVersion` must be (en/de)codable for k8s versions `MinCompatibilityVersion` through `EmulationVersion+1`.
604605

605606
Thus, to determine the storage version to use at compatibility version N, we
606-
will find the set of all supported GVRs for each of N-1, N, and N+1 and intersect
607+
will find the set of all supported GVRs for each version in the range of `MinCompatibilityVersion` and `EmulationVersion+1` and intersect
607608
them to find a list of all GVRs supported by every binary version in the window.
608609
The storage version of each group-resource is the newest
609610
(using kube-aware version sorting) version found in that list for that group-resource.
@@ -876,7 +877,7 @@ We intend to have this up and running for Beta
876877

877878
- Initial cross-branch e2e tests completed and enabled
878879
- Emulation version support for N-3 minor versions
879-
- Compatibility version support for N-3 minor versions
880+
- Min compatibility version support for N-3 minor versions
880881
- Clients send version number and servers report out-of-allowance skew to a metric
881882
(Leveraging work from KEP-4355 if possible)
882883
- All existing features migrated to versioned feature gate - [kubernetes #125031](https://github.com/kubernetes/kubernetes/issues/125031)

0 commit comments

Comments
 (0)