Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[docs] Kubernetes support matrix #1518

Closed
chuckha opened this issue Oct 10, 2019 · 10 comments · Fixed by #3031
Closed

[docs] Kubernetes support matrix #1518

chuckha opened this issue Oct 10, 2019 · 10 comments · Fixed by #3031
Assignees
Labels
help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. kind/documentation Categorizes issue or PR as related to documentation. lifecycle/active Indicates that an issue or PR is actively being worked on by a contributor. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete.
Milestone

Comments

@chuckha
Copy link
Contributor

chuckha commented Oct 10, 2019

/kind documentation

Write down supported Kubernetes versions. The questions I would like answered are:

  1. What versions of kubernetes can I install with a given version of Cluster API?
  2. Do we ever drop support for a kubernetes version?

To understand why this is a difficult question let's examine Cluster API v1alpha2. When we started it, CAPI v1alpha1 supported Kubernetes v1.13, v1.14 and v1.15. By the time work on v1alpha3 began, v1alpha2 supported v1.13, 1.14, 1.15 and 1.16. Do we stick with an n-2 versioning scheme? Do we do something more complex like: We support all versions spanning (n-2, n-1, n (== current version)) as well as all releases released during the CAPI development cycle? For example, CAPI v1a2 supports v1.13-v1.16 because those were the valid k8s versions during development. This is just an idea. We could certainly drop support as k8s rolls out new versions, but then we get into a weird place where we drop support in the middle of a CAPI development cycle. Realistically though that should be fine.

@k8s-ci-robot k8s-ci-robot added the kind/documentation Categorizes issue or PR as related to documentation. label Oct 10, 2019
@detiber
Copy link
Member

detiber commented Oct 10, 2019

With the current state of things (v1alpha2+), the real restriction is currently based on the versions supported by CABPK through the exposed kubeadm configuration.

For official support, I would like to state plainly that we do not support any Kubernetes versions < n-2, since those fall out of support by Kubernetes proper.

I'm not sure that v1.17 will support kubeadm v1beta1 with the adoption of v1beta3 (kubernetes/kubeadm#1796). We can likely transition to using the v1beta2 config for supporting v1.15-v1.17, but that will require us having a migration path to convert the existing kubeadmconfig and kubeadmconfigtemplate types to support the v1beta2 config rather than the v1beta1 config we do today.

@neolit123
Copy link
Member

we marked v1beta1 in kubeadm as deprecated this cycle (1.17), so it will be removed in 1.20.
(was originally planned for removal in 1.18).

@detiber
Copy link
Member

detiber commented Oct 10, 2019

we marked v1beta1 in kubeadm as deprecated this cycle (1.17), so it will be removed in 1.20.
(was originally planned for removal in 1.18).

Nice

@ncdc ncdc added the priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete. label Oct 16, 2019
@ncdc ncdc added this to the Next milestone Oct 16, 2019
@fejta-bot
Copy link

Issues go stale after 90d of inactivity.
Mark the issue as fresh with /remove-lifecycle stale.
Stale issues rot after an additional 30d of inactivity and eventually close.

If this issue is safe to close now please do so with /close.

Send feedback to sig-testing, kubernetes/test-infra and/or fejta.
/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jan 14, 2020
@vincepri
Copy link
Member

/lifecycle frozen

@k8s-ci-robot k8s-ci-robot added lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Jan 15, 2020
@vincepri vincepri removed the lifecycle/frozen Indicates that an issue or PR should not be auto-closed due to staleness. label Mar 11, 2020
@vincepri
Copy link
Member

We should try to tackle this in v0.3.x now that we're focusing on alpha3 for a little longer.

/help
/milestone v0.3.x

@k8s-ci-robot
Copy link
Contributor

@vincepri:
This request has been marked as needing help from a contributor.

Please ensure the request meets the requirements listed here.

If this request no longer meets these requirements, the label can be removed
by commenting with the /remove-help command.

In response to this:

We should try to tackle this in v0.3.x now that we're focusing on alpha3 for a little longer.

/help
/milestone v0.3.x

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@k8s-ci-robot k8s-ci-robot modified the milestones: Next, v0.3.x Apr 20, 2020
@k8s-ci-robot k8s-ci-robot added the help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. label Apr 20, 2020
@CecileRobertMichon
Copy link
Contributor

If we're officially supporting and deprecating versions, we should also consider adding validation on k8s versions to reject create or updates with unsupported versions. Also, we might want a way for users to get a list of supported k8s versions with clusterctl based on the versions supported by the version of CABPK installed.

@dlipovetsky
Copy link
Contributor

I'll work on the docs. Once that's there, I can open issues for validation and clusterctl support.

/assign
/lifecycle active

@k8s-ci-robot k8s-ci-robot added the lifecycle/active Indicates that an issue or PR is actively being worked on by a contributor. label Apr 29, 2020
@detiber
Copy link
Member

detiber commented Apr 29, 2020

If we're officially supporting and deprecating versions, we should also consider adding validation on k8s versions to reject create or updates with unsupported versions. Also, we might want a way for users to get a list of supported k8s versions with clusterctl based on the versions supported by the version of CABPK installed.

I think this gets a bit tricky when we compare:

  1. What is supported by the implementation, which currently is any version associated with a version of kubeadm that accepts the v1beta1 config currently
  2. What is our "official" support policy, which is to align with supported upstream kubernetes releases
  3. What downstream consumers (such as projects and products that are consuming, extending, or wrapping Cluster API), officially support

I think validating on the lower bounds for 1 should be relatively non-controversial, since the implementations of KubeadmControlPlane and KubeadmConfig controllers would fail to work. I'm not sure we can validate on the upper bounds, since we don't yet know which version will remove support for the kubeadm v1beta1 config yet.

If we wanted to validate on 2, we'd need to provide a way to override that for users and downstream consumers. It would also create challenges for how do we update this as the Kubernetes release cycle is disjoint from ours and a Kubernetes release can go out of support upstream during the middle of the Cluster API release cycle.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
help wanted Denotes an issue that needs help from a contributor. Must meet "help wanted" guidelines. kind/documentation Categorizes issue or PR as related to documentation. lifecycle/active Indicates that an issue or PR is actively being worked on by a contributor. priority/important-longterm Important over the long term, but may not be staffed and/or may need multiple releases to complete.
Projects
None yet
Development

Successfully merging a pull request may close this issue.

9 participants