|
| 1 | +# Cluster API Version Support and Kubernetes Version Skew Policy |
| 2 | + |
| 3 | +## Supported Versions |
| 4 | + |
| 5 | +The Cluster API team maintains release branches for **(v1alpha3) v0.3** and **(v1alpha2) v0.2**, the two most recent releases. |
| 6 | + |
| 7 | +Releases include these components: |
| 8 | + |
| 9 | +- Core Provider |
| 10 | +- Kubeadm Bootstrap Provider |
| 11 | +- Kubeadm Control Plane Provider |
| 12 | +- clusterctl client |
| 13 | + |
| 14 | +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). |
| 15 | + |
| 16 | +## Supported Kubernetes Versions |
| 17 | + |
| 18 | +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. |
| 19 | + |
| 20 | +See the [following section](#kubernetes-version-support-as-a-function-of-cluster-topology) to understand how cluster topology affects version support. |
| 21 | + |
| 22 | +### Kubernetes Version Support As A Function Of Cluster Topology |
| 23 | + |
| 24 | +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. |
| 25 | + |
| 26 | +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. |
| 27 | + |
| 28 | +These diagrams show the relationships between components in a Cluster API release (yellow), and other components (white). |
| 29 | + |
| 30 | +#### Management And Workload Cluster Are the Same (Self-hosted) |
| 31 | + |
| 32 | + |
| 33 | + |
| 34 | +#### Management And Workload Clusters Are Separate |
| 35 | + |
| 36 | + |
| 37 | + |
| 38 | +### Release Components |
| 39 | + |
| 40 | +#### Core Provider (`cluster-api-controller`) |
| 41 | + |
| 42 | +||Cluster API v1alpha2 (v0.2)|Cluster API v1alpha3 (v0.3)| |
| 43 | +|-|-|-| |
| 44 | +|Kubernetes v1.13|✓|| |
| 45 | +|Kubernetes v1.14|✓|| |
| 46 | +|Kubernetes v1.15|✓|| |
| 47 | +|Kubernetes v1.16|✓|✓| |
| 48 | +|Kubernetes v1.17||✓| |
| 49 | +|Kubernetes v1.18||✓| |
| 50 | + |
| 51 | +The Core Provider also talks to API server of every Workload Cluster. Therefore, the Workload Cluster's Kubernetes version must also be compatible. |
| 52 | + |
| 53 | +#### Kubeadm Bootstrap Provider (`kubeadm-bootstrap-controller`) |
| 54 | + |
| 55 | +||Cluster API v1alpha2 (v0.2)|Cluster API v1alpha3 (v0.3)| |
| 56 | +|-|-|-| |
| 57 | +|Kubernetes v1.13||| |
| 58 | +|Kubernetes v1.14 + kubeadm/v1beta1|✓|| |
| 59 | +|Kubernetes v1.15 + kubeadm/v1beta1|✓|| |
| 60 | +|Kubernetes v1.16 + kubeadm/v1beta1|✓|✓| |
| 61 | +|Kubernetes v1.17 + kubeadm/v1beta1||✓| |
| 62 | +|Kubernetes v1.18 + kubeadm/v1beta1||✓| |
| 63 | + |
| 64 | +The Kubeadm Bootstrap Provider generates configuration using the v1beta1 kubeadm API. |
| 65 | + |
| 66 | +#### Kubeadm Control Plane Provider (`kubeadm-control-plane-controller`) |
| 67 | + |
| 68 | +||Cluster API v1alpha2 (v0.2)|Cluster API v1alpha3 (v0.3)| |
| 69 | +|-|-|-| |
| 70 | +|Kubernetes v1.13||| |
| 71 | +|Kubernetes v1.14||| |
| 72 | +|Kubernetes v1.15||| |
| 73 | +|Kubernetes v1.16 + etcd/v3||✓| |
| 74 | +|Kubernetes v1.17 + etcd/v3||✓| |
| 75 | +|Kubernetes v1.18 + etcd/v3||✓| |
| 76 | + |
| 77 | +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. |
| 78 | + |
| 79 | +The Kubeadm Control Plane requires the Kubeadm Bootstrap Provider. |
| 80 | + |
| 81 | +## Providers Maintained By Independent Teams |
| 82 | + |
| 83 | +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. |
| 84 | + |
| 85 | +To understand the version compatibility of a specific provider, please see its documentation. This book includes [a list of independent providers](providers.md) |
0 commit comments