Skip to content

Commit

Permalink
Merge pull request #3031 from dlipovetsky/version-skew
Browse files Browse the repository at this point in the history
📖 Kubernetes support matrix
  • Loading branch information
k8s-ci-robot authored May 25, 2020
2 parents a32a783 + ec46f28 commit 99cb87a
Show file tree
Hide file tree
Showing 6 changed files with 142 additions and 0 deletions.
1 change: 1 addition & 0 deletions docs/book/src/SUMMARY.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,5 @@
- [Ports](./reference/ports.md)
- [Code of Conduct](./code-of-conduct.md)
- [Contributing](./CONTRIBUTING.md)
- [Version Support](./reference/versions.md)
- [Roadmap](./roadmap.md)
21 changes: 21 additions & 0 deletions docs/book/src/images/management-workload-same-cluster.plantuml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
@startuml

[clusterctl]

package "Management/Workload Cluster" {
[Kubeadm Control Plane Provider] as cakcp
[Core Provider] as capi
[Kubeadm Bootstrap Provider] as cabpk
[Infrastructure Provider] as infra #white
[API Server] as api #white
[etcd] #white
capi --> api
cabpk --> api
cakcp --> api
infra --> api
cakcp --> etcd
}

clusterctl -> api

@enduml
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
@startuml

[clusterctl]

package "Management Cluster" {
[Kubeadm Bootstrap Provider] as cabpk
[Core Provider] as capi
[Kubeadm Control Plane Provider] as cakcp
[Infrastructure Provider] as infra #white
[API Server] as api #white
capi --> api
cabpk --> api
cakcp --> api
infra --> api
}

clusterctl -> api

package "Workload Cluster 1" {
[API Server] as api1 #white
[etcd] as etcd1 #white
capi ---> api1
cakcp ---> api1
cakcp ---> etcd1
}

package "Workload Cluster 2" {
[API Server] as api2 #white
[etcd] as etcd2 #white
capi ---> api2
cakcp ---> api2
cakcp ---> etcd2
}

@enduml
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
85 changes: 85 additions & 0 deletions docs/book/src/reference/versions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
# Cluster API Version Support and Kubernetes Version Skew Policy

## Supported Versions

The Cluster API team maintains release branches for **(v1alpha3) v0.3** and **(v1alpha2) v0.2**, the two most recent releases.

Releases include these components:

- Core Provider
- Kubeadm Bootstrap Provider
- Kubeadm Control Plane Provider
- clusterctl client

All Infrastructure Providers are maintained by independent teams. Other Bootstrap and Control Plane Providers are also maintained by independent teams. For more information about their version support, see [below](#providers-maintained-by-independent-teams).

## Supported Kubernetes Versions

The project aims to keep the current minor release compatible with the actively supported Kubernetes minor releases, i.e., the current release (N), N-1, and N-2. To find out the exact range of Kubernetes versions supported by each component, please see the [tables](#release-components) below.

See the [following section](#kubernetes-version-support-as-a-function-of-cluster-topology) to understand how cluster topology affects version support.

### Kubernetes Version Support As A Function Of Cluster Topology

The Core Provider, Kubeadm Bootstrap Provider, and Kubeadm Control Plane Provider run on the Management Cluster, and clusterctl talks to that cluster's API server.

In some cases, the Management Cluster is separate from the Workload Clusters. The Kubernetes version of the Management and Workload Clusters are allowed to be different. For example, the current Cluster API release is compatible with Kubernetes versions 1.16 through 1.18. For example, the Management Cluster can run v1.18.2, and two Workload Clusters can run v1.16.9 and v1.17.5.

These diagrams show the relationships between components in a Cluster API release (yellow), and other components (white).

#### Management And Workload Cluster Are the Same (Self-hosted)

![Management/Workload Same Cluster](../images/management-workload-same-cluster.png)

#### Management And Workload Clusters Are Separate

![Management/Workload Separate Clusters](../images/management-workload-separate-clusters.png)

### Release Components

#### Core Provider (`cluster-api-controller`)

||Cluster API v1alpha2 (v0.2)|Cluster API v1alpha3 (v0.3)|
|-|-|-|
|Kubernetes v1.13|||
|Kubernetes v1.14|||
|Kubernetes v1.15|||
|Kubernetes v1.16|||
|Kubernetes v1.17|||
|Kubernetes v1.18|||

The Core Provider also talks to API server of every Workload Cluster. Therefore, the Workload Cluster's Kubernetes version must also be compatible.

#### Kubeadm Bootstrap Provider (`kubeadm-bootstrap-controller`)

||Cluster API v1alpha2 (v0.2)|Cluster API v1alpha3 (v0.3)|
|-|-|-|
|Kubernetes v1.13|||
|Kubernetes v1.14 + kubeadm/v1beta1|||
|Kubernetes v1.15 + kubeadm/v1beta1|||
|Kubernetes v1.16 + kubeadm/v1beta1|||
|Kubernetes v1.17 + kubeadm/v1beta1|||
|Kubernetes v1.18 + kubeadm/v1beta1|||

The Kubeadm Bootstrap Provider generates configuration using the v1beta1 kubeadm API.

#### Kubeadm Control Plane Provider (`kubeadm-control-plane-controller`)

||Cluster API v1alpha2 (v0.2)|Cluster API v1alpha3 (v0.3)|
|-|-|-|
|Kubernetes v1.13|||
|Kubernetes v1.14|||
|Kubernetes v1.15|||
|Kubernetes v1.16 + etcd/v3|||
|Kubernetes v1.17 + etcd/v3|||
|Kubernetes v1.18 + etcd/v3|||

The Kubeadm Control Plane Provider talks to the API server and etcd members of every Workload Cluster whose control plane it owns. It uses the etcd v3 API.

The Kubeadm Control Plane requires the Kubeadm Bootstrap Provider.

## Providers Maintained By Independent Teams

In general, if a Provider version M says it is compatible with Cluster API version N, then version M must be compatible with a subset of the Kubernetes versions supported by Cluster API version N.

To understand the version compatibility of a specific provider, please see its documentation. This book includes [a list of independent providers](providers.md)

0 comments on commit 99cb87a

Please sign in to comment.