kubeadm upgrade
is a user-friendly command that wraps complex upgrading logic behind one command, with support for both planning an upgrade and actually performing it.
The steps for performing an upgrade using kubeadm are outlined in this document. For older versions of kubeadm, please refer to older documentation sets of the Kubernetes website.
You can use kubeadm upgrade diff
to see the changes that would be applied to static pod manifests.
In Kubernetes v1.15.0 and later, kubeadm upgrade apply
and kubeadm upgrade node
will also automatically renew the kubeadm managed certificates on this node, including those stored in kubeconfig files. To opt-out, it is possible to pass the flag --certificate-renewal=false
. For more details about certificate renewal see the certificate management documentation.
kubeadm upgrade apply
and kubeadm upgrade plan
have a legacy --config
flag which makes it possible to reconfigure the cluster, while performing planning or upgrade of that particular control-plane node. Please be aware that the upgrade workflow was not designed for this scenario and there are reports of unexpected results. Check which versions are available to upgrade to and validate whether your current cluster is upgradeable. To skip the internet check, pass in the optional [version] parameter
Check which versions are available to upgrade to and validate whether your current cluster is upgradeable. To skip the internet check, pass in the optional [version] parameter
kubeadm upgrade plan [version] [flags]
--allow-experimental-upgrades | |
Show unstable versions of Kubernetes as an upgrade alternative and allow upgrading to an alpha/beta/release candidate versions of Kubernetes. | |
--allow-release-candidate-upgrades | |
Show release candidate versions of Kubernetes as an upgrade alternative and allow upgrading to a release candidate versions of Kubernetes. | |
--config string | |
Path to a kubeadm configuration file. | |
--feature-gates string | |
A set of key=value pairs that describe feature gates for various features. Options are: | |
-h, --help | |
help for plan | |
--ignore-preflight-errors strings | |
A list of checks whose errors will be shown as warnings. Example: 'IsPrivilegedUser,Swap'. Value 'all' ignores errors from all checks. | |
--kubeconfig string Default: "/etc/kubernetes/admin.conf" | |
The kubeconfig file to use when talking to the cluster. If the flag is not set, a set of standard locations can be searched for an existing kubeconfig file. | |
--print-config | |
Specifies whether the configuration file that will be used in the upgrade should be printed or not. |
--rootfs string | |
[EXPERIMENTAL] The path to the 'real' host root filesystem. |
Upgrade your Kubernetes cluster to the specified version
Upgrade your Kubernetes cluster to the specified version
kubeadm upgrade apply [version]
--allow-experimental-upgrades | |
Show unstable versions of Kubernetes as an upgrade alternative and allow upgrading to an alpha/beta/release candidate versions of Kubernetes. | |
--allow-release-candidate-upgrades | |
Show release candidate versions of Kubernetes as an upgrade alternative and allow upgrading to a release candidate versions of Kubernetes. | |
--certificate-renewal Default: true | |
Perform the renewal of certificates used by component changed during upgrades. | |
--config string | |
Path to a kubeadm configuration file. | |
--dry-run | |
Do not change any state, just output what actions would be performed. | |
--etcd-upgrade Default: true | |
Perform the upgrade of etcd. | |
--feature-gates string | |
A set of key=value pairs that describe feature gates for various features. Options are: | |
-f, --force | |
Force upgrading although some requirements might not be met. This also implies non-interactive mode. | |
-h, --help | |
help for apply | |
--ignore-preflight-errors strings | |
A list of checks whose errors will be shown as warnings. Example: 'IsPrivilegedUser,Swap'. Value 'all' ignores errors from all checks. | |
--kubeconfig string Default: "/etc/kubernetes/admin.conf" | |
The kubeconfig file to use when talking to the cluster. If the flag is not set, a set of standard locations can be searched for an existing kubeconfig file. | |
--patches string | |
Path to a directory that contains files named "target[suffix][+patchtype].extension". For example, "kube-apiserver0+merge.yaml" or just "etcd.json". "target" can be one of "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd". "patchtype" can be one of "strategic", "merge" or "json" and they match the patch formats supported by kubectl. The default "patchtype" is "strategic". "extension" must be either "json" or "yaml". "suffix" is an optional string that can be used to determine which patches are applied first alpha-numerically. | |
--print-config | |
Specifies whether the configuration file that will be used in the upgrade should be printed or not. | |
-y, --yes | |
Perform the upgrade and do not prompt for confirmation (non-interactive mode). |
--rootfs string | |
[EXPERIMENTAL] The path to the 'real' host root filesystem. |
Show what differences would be applied to existing static pod manifests. See also: kubeadm upgrade apply --dry-run
Show what differences would be applied to existing static pod manifests. See also: kubeadm upgrade apply --dry-run
kubeadm upgrade diff [version] [flags]
--api-server-manifest string Default: "/etc/kubernetes/manifests/kube-apiserver.yaml" | |
path to API server manifest | |
--config string | |
Path to a kubeadm configuration file. | |
-c, --context-lines int Default: 3 | |
How many lines of context in the diff | |
--controller-manager-manifest string Default: "/etc/kubernetes/manifests/kube-controller-manager.yaml" | |
path to controller manifest | |
-h, --help | |
help for diff | |
--kubeconfig string Default: "/etc/kubernetes/admin.conf" | |
The kubeconfig file to use when talking to the cluster. If the flag is not set, a set of standard locations can be searched for an existing kubeconfig file. | |
--scheduler-manifest string Default: "/etc/kubernetes/manifests/kube-scheduler.yaml" | |
path to scheduler manifest |
--rootfs string | |
[EXPERIMENTAL] The path to the 'real' host root filesystem. |
Upgrade commands for a node in the cluster
Upgrade commands for a node in the cluster
The "node" command executes the following phases:
preflight Run upgrade node pre-flight checks
control-plane Upgrade the control plane instance deployed on this node, if any
kubelet-config Upgrade the kubelet configuration for this node
kubeadm upgrade node [flags]
--certificate-renewal Default: true | |
Perform the renewal of certificates used by component changed during upgrades. | |
--dry-run | |
Do not change any state, just output the actions that would be performed. | |
--etcd-upgrade Default: true | |
Perform the upgrade of etcd. | |
-h, --help | |
help for node | |
--ignore-preflight-errors strings | |
A list of checks whose errors will be shown as warnings. Example: 'IsPrivilegedUser,Swap'. Value 'all' ignores errors from all checks. | |
--kubeconfig string Default: "/etc/kubernetes/admin.conf" | |
The kubeconfig file to use when talking to the cluster. If the flag is not set, a set of standard locations can be searched for an existing kubeconfig file. | |
--patches string | |
Path to a directory that contains files named "target[suffix][+patchtype].extension". For example, "kube-apiserver0+merge.yaml" or just "etcd.json". "target" can be one of "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd". "patchtype" can be one of "strategic", "merge" or "json" and they match the patch formats supported by kubectl. The default "patchtype" is "strategic". "extension" must be either "json" or "yaml". "suffix" is an optional string that can be used to determine which patches are applied first alpha-numerically. | |
--skip-phases strings | |
List of phases to be skipped |
--rootfs string | |
[EXPERIMENTAL] The path to the 'real' host root filesystem. |
kubeadm upgrade
© 2022 The Kubernetes Authors
Documentation Distributed under CC BY 4.0.
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-upgrade