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. kubeadm upgrade
can also be used for downgrading
cluster if necessary.
Every upgrade process might be a bit different, so we’ve documented each minor upgrade process individually. For more version-specific upgrade guidance, see the following resources:
For older versions, please refer to older documentation sets on the Kubernetes website.
In Kubernetes v1.11.0 and later, you can use kubeadm upgrade diff
to see the changes that would be
applied to static pod manifests.
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 kubeadm config file (WARNING: Usage of a configuration file is experimental) | |
--feature-gates string | |
A set of key=value pairs that describe feature gates for various features. Options are: Auditing=true|false (ALPHA - default=false) CoreDNS=true|false (default=true) DynamicKubeletConfig=true|false (BETA - default=false) |
|
-h, --help | |
help for plan | |
--ignore-preflight-errors stringSlice | |
A list of checks whose errors will be shown as warnings. Example: 'IsPrivilegedUser,Swap'. Value 'all' ignores errors from all checks. | |
--kubeconfig string Default: "/Users/zarnold/.kube/config" | |
The KubeConfig file to use when talking to the cluster. If the flag is not set, a set of standard locations are 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. | |
--config string | |
Path to kubeadm config file (WARNING: Usage of a configuration file is experimental) | |
--cri-socket string Default: "/var/run/dockershim.sock" | |
Specify the CRI socket to connect to. | |
--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: Auditing=true|false (ALPHA - default=false) CoreDNS=true|false (default=true) DynamicKubeletConfig=true|false (BETA - default=false) |
|
-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 stringSlice | |
A list of checks whose errors will be shown as warnings. Example: 'IsPrivilegedUser,Swap'. Value 'all' ignores errors from all checks. | |
--image-pull-timeout duration Default: 15m0s | |
The maximum amount of time to wait for the control plane pods to be downloaded. | |
--kubeconfig string Default: "/Users/zarnold/.kube/config" | |
The KubeConfig file to use when talking to the cluster. If the flag is not set, a set of standard locations are 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. | |
-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 kubeadm config file (WARNING: Usage of a configuration file is experimental) | |
-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 | |
--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. |
Downloads the kubelet configuration from the cluster ConfigMap kubelet-config-1.X, where X is the minor version of the kubelet.
Downloads the kubelet configuration from a ConfigMap of the form “kubelet-config-1.X” in the cluster, where X is the minor version of the kubelet. kubeadm uses the –kubelet-version parameter to determine what the desired kubelet version is. Give
kubeadm upgrade node config [flags]
# Downloads the kubelet configuration from the ConfigMap in the cluster. Uses a specific desired kubelet version.
kubeadm upgrade node config --kubelet-version v1.12.0
# Simulates the downloading of the kubelet configuration from the ConfigMap in the cluster with a specific desired
# version. Does not change any state locally on the node.
kubeadm upgrade node config --kubelet-version v1.12.0 --dry-run
--dry-run | |
Do not change any state, just output the actions that would be performed. | |
-h, --help | |
help for config | |
--kubeconfig string Default: "/etc/kubernetes/kubelet.conf" | |
The KubeConfig file to use when talking to the cluster. If the flag is not set, a set of standard locations are searched for an existing KubeConfig file. | |
--kubelet-version string | |
The *desired* version for the kubelet after the upgrade. |
--rootfs string | |
[EXPERIMENTAL] The path to the 'real' host root filesystem. |
Upgrades the control plane instance deployed on this node. IMPORTANT. This command should be executed after executing kubeadm upgrade apply
on another control plane instance
Downloads the kubelet configuration from a ConfigMap of the form “kubelet-config-1.X” in the cluster, where X is the minor version of the kubelet. kubeadm uses the –kubelet-version parameter to determine what the desired kubelet version is. Give
kubeadm upgrade node experimental-control-plane [flags]
# Downloads the kubelet configuration from the ConfigMap in the cluster. Uses a specific desired kubelet version.
kubeadm upgrade node config --kubelet-version v1.12.0
# Simulates the downloading of the kubelet configuration from the ConfigMap in the cluster with a specific desired
# version. Does not change any state locally on the node.
kubeadm upgrade node config --kubelet-version v1.12.0 --dry-run
--dry-run | |
Do not change any state, just output the actions that would be performed. | |
-h, --help | |
help for experimental-control-plane | |
--kubeconfig string Default: "/etc/kubernetes/kubelet.conf" | |
The KubeConfig file to use when talking to the cluster. If the flag is not set, a set of standard locations are searched for an existing KubeConfig file. |
--rootfs string | |
[EXPERIMENTAL] The path to the 'real' host root filesystem. |
kubeadm upgrade
Was this page helpful?
Thanks for the feedback. If you have a specific, answerable question about how to use Kubernetes, ask it on Stack Overflow. Open an issue in the GitHub repo if you want to report a problem or suggest an improvement.