kubeadm: improve the version skew documentation

This issue has been created since 2022-03-16.

in this section:

we document the kubeadm skew against the control plane, but we do not mention the skew of kubeadm against:

  • the kubelet
  • kubeadm itself

replace the section with the following to clarify all points:

## Version skew policy {#version-skew-policy}

While kubeadm allows version skew against some components that it manages, it is recommended that you
match the kubeadm version with the versions of the control plane components, kube-proxy and kubelet.

### kubeadm's skew against the Kubernetes version

kubeadm can be used with Kubernetes components that are the same version as kubeadm
or one version older. The Kubernetes version can be specified to kubeadm by using the
`--kubernetes-version` flag of `kubeadm init` or the
field when using `--config`. This option will control the versions
of kube-apiserver, kube-controller-manager, kube-scheduler and kube-proxy.

* kubeadm is at {{< skew latestVersion >}}
* `kubernetesVersion` must be at {{< skew latestVersion >}} or {{< skew prevMinorVersion >}}

### kubeadm's skew against the kubelet

Similarly to the Kubernetes version, kubeadm can be used with a kubelet version that is the same
version as kubeadm or one version older.

* kubeadm is at {{< skew latestVersion >}}
* kubelet on the host must be at {{< skew latestVersion >}} or {{< skew prevMinorVersion >}}

### kubeadm's skew against kubeadm

There are certain limitations on how kubeadm commands can operate on existing nodes or whole cluster
managed by kubeadm.

If new nodes are joined to the cluster, the kubeadm binary used for `kubeadm join` must match
the last version of kubeadm used to either create the cluster with `kubeadm init` or to upgrade
the same node with `kubeadm upgrade`. Similar rules apply to the rest of the kubeadm commands
with the exception of `kubeadm upgrade`.

Example for `kubeadm join`:
* kubeadm version {{< skew latestVersion >}} was used to create a cluster with `kubeadm init`
* Joining nodes must use a kubeadm binary that is at version {{< skew latestVersion >}}

Nodes that are being upgraded must use a version of kubeadm that is the same MINOR
version or one MINOR version newer than the version of kubeadm used for managing the

Example for `kubeadm upgrade`:
* kubeadm version {{< skew prevMinorVersion >}} was used to create or upgrade the node
* The version of kubeadm used for upgrading the node must be at {{< skew prevMinorVersion >}}
or {{< skew latestVersion >}}

To learn more about the version skew between the different Kubernetes component see
the [Version Skew Policy](https://kubernetes.io/releases/version-skew-policy/).
neolit123 wrote this answer on 2022-03-16

/sig cluster-lifecycle

k8s-ci-robot wrote this answer on 2022-03-16

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


Please ensure that the issue body includes answers to the following questions:

  • Why are we solving this issue?
  • To address this issue, are there any code changes? If there are code changes, what needs to be done in the code and what places can the assignee treat as reference points?
  • Does this issue have zero to low barrier of entry?
  • How can the assignee reach out to you for help?

For more details on the requirements of such an issue, please see here and ensure that they are met.

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

In response to this:

/sig cluster-lifecycle

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.

PriyanshuAhlawat wrote this answer on 2022-03-16


neolit123 wrote this answer on 2022-03-16

@PriyanshuAhlawat thanks for assigning your self.
i've added some quick edits to the text a couple of minutes ago.

PriyanshuAhlawat wrote this answer on 2022-03-16

@neolit123 found them👍

neolit123 wrote this answer on 2022-03-17

/triage accepted

More Details About Repo
Owner Name kubernetes
Repo Name website
Full Name kubernetes/website
Language HTML
Created Date 2016-02-10
Updated Date 2022-09-27
Star Count 3434
Watcher Count 207
Fork Count 11671
Issue Count 826


Issue Title Created Date Comment Count Updated Date
[sui framework] add entry function for paying multiple addresses 0 2022-08-22 2022-08-27
The batch operation function for user groups in user search page does not work except for admin. 0 2022-08-01 2022-09-13
Plans button has a white square behind 0 2021-11-17 2022-07-23
Error Cannot find module 'rimraf' React Core Boilerplate 2 2020-08-08 2022-08-29
`toThrow` with async errors 0 2022-06-22 2022-07-08
Error converting HEX to DECIMAL 2 2022-02-24 2022-08-31
Utility of method oneHot in utils.py 0 2021-06-04 2022-09-22
Auto formatting error when use Wiki Links 6 2021-12-14 2022-09-02
[Bot] Broken Links Report 0 2021-09-01 2022-09-22
[Bug]: Dathike db keeps growing with no history enabled. 4 2022-02-24 2022-09-02
scroll on the volume bar to change the volume 1 2021-08-02 2022-09-20
Concept of generating cypher from GraphQL query seem to be wrong if using custom Data Fetchers 6 2022-02-04 2022-09-20
How to terminate a running workflow? 2 2021-12-30 2022-08-09
TODO: extend AppKit `NSDocumentController` to manage recent items via `applicationd` 1 2021-08-30 2022-08-01
Correctly lock before changing resource quota 1 2019-11-06 2022-09-10
Plans for native Vue style and compatibility with vuetify? 4 2019-01-07 2021-12-27
Workflows fail when video filenames contain certain nonalphanumeric characters 0 2020-07-22 2022-09-22
Element access to external signal vector 0 2022-07-22 2022-08-29
Cannot access to KEEWEB via network 1 2021-06-18 2022-09-14
Error writing metadata after downloading a song 2 2021-05-03 2022-09-02
clustering: Openfire admin console page 'conversations' can fail 2 2020-09-09 2022-09-22
Introduce automated code style formatting and linting 8 2021-06-01 2022-09-23
Improve coverage? 1 2021-07-31 2021-12-18
[Feature Request] Add support for adding assets from a package 5 2020-11-04 2022-09-27
ENH: Accelerating np.sort with parallel support 6 2021-12-13 2022-09-22
Ports not exposed in Dockerfile 0 2021-04-19 2022-09-14
Icon Request: Relay 0 2021-12-04 2022-01-16
Command line tools not found 3 2021-11-02 2022-09-19
[Toolkits] Switch to two-level design 0 2021-12-17 2022-09-22
Arrow character does not render in powershell installation instructions 1 2021-03-01 2022-09-25
Add the ability to paste a text link to another node in the game comments 5 2021-08-01 2022-09-10
Update for latest version of IntelliJ 4 2021-04-27 2022-08-31
General questions about GUI 6 2019-06-16 2022-08-01
Rename TextureRect.expand to something descriptive of what it does 3 2022-04-30 2022-09-08
Clang compile assemble file, report error 9 2022-06-10 2022-08-01
[Interpreter][clang-repl] Can't redeclare if we type the decl in a wrong way and it's not first repl 3 2022-06-10 2022-08-13
actix-web project fails to build with actix-utls > 3.0.0-beta.2 1 2021-04-01 2022-07-29
How to Handle Time Series 2 2020-11-30 2022-07-23
`CHECK_*` macro signatures break downstream pytorch/xla build 10 2022-07-13 2022-09-17
OSS Download: Better output when package isn't found 1 2021-06-19 2022-09-20
Wazuh Dashboard plugin installation in Kubernetes 1 2022-01-14 2022-09-26
Re-implement the indeterminate progress bar that was removed or never finished in v2 1 2022-07-31 2022-09-14
IPv6 addresses in SAN lists don't match documentation 2 2020-12-09 2022-09-16
compiling elfutils gives me __thread support missing 4 2021-10-25 2022-09-16
Telegram Stickers Node error. 1 2021-08-09 2022-09-21
Questions about Traversing the latent space 1 2020-11-19 2022-08-30
Request for clarification in DoNotHash and OnModelClickListener documentation 2 2022-06-20 2022-09-16
can't connection database 2 2022-03-01 2022-08-26
global.less file svg style is cutting of elements inside svg element 3 2022-01-05 2022-09-20
Rolling upgrade should handle data tiers 3 2022-01-05 2022-09-20