# kubeadm upgrade

kubeadm upgradekubeadm 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 guidanceThe 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.Note:The commands 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.kubeadm upgrade planSynopsisCheck which versions are available to upgrade to and validate whether your current cluster is upgradeable. This command can only run on the control plane nodes where the kubeconfig file "admin.conf" exists. To skip the internet check, pass in the optional [version] parameter.kubeadm upgrade plan [version] [flags] Options--allow-experimental-upgradesShow unstable versions of Kubernetes as an upgrade alternative and allow upgrading to an alpha/beta/release candidate versions of Kubernetes.--allow-missing-template-keys Default: trueIf true, ignore any errors in templates when a field or map key is missing in the template. Only applies to golang and jsonpath output formats.--allow-release-candidate-upgradesShow release candidate versions of Kubernetes as an upgrade alternative and allow upgrading to a release candidate versions of Kubernetes.--config stringPath to a kubeadm configuration file.--etcd-upgrade Default: truePerform the upgrade of etcd.-h, --helphelp for plan--ignore-preflight-errors stringsA 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.-o, --output string Default: "text"Output format. One of: text|json|yaml|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.--print-configSpecifies whether the configuration file that will be used in the upgrade should be printed or not.--show-managed-fieldsIf true, keep the managedFields when printing objects in JSON or YAML format.Options inherited from parent commands--rootfs stringThe path to the 'real' host root filesystem. This will cause kubeadm to chroot into the provided path.kubeadm upgrade applySynopsisUpgrade your Kubernetes cluster to the specified versionThe "apply [version]" command executes the following phases:preflight Run preflight checks before upgrade control-plane Upgrade the control plane upload-config Upload the kubeadm and kubelet configurations to ConfigMaps /kubeadm Upload the kubeadm ClusterConfiguration to a ConfigMap /kubelet Upload the kubelet configuration to a ConfigMap kubelet-config Upgrade the kubelet configuration for this node bootstrap-token Configures bootstrap token and cluster-info RBAC rules addon Upgrade the default kubeadm addons /coredns Upgrade the CoreDNS addon /kube-proxy Upgrade the kube-proxy addon post-upgrade Run post upgrade tasks kubeadm upgrade apply [version] Options--allow-experimental-upgradesShow unstable versions of Kubernetes as an upgrade alternative and allow upgrading to an alpha/beta/release candidate versions of Kubernetes.--allow-release-candidate-upgradesShow release candidate versions of Kubernetes as an upgrade alternative and allow upgrading to a release candidate versions of Kubernetes.--certificate-renewal Default: truePerform the renewal of certificates used by component changed during upgrades.--config stringPath to a kubeadm configuration file.--dry-runDo not change any state, just output what actions would be performed.--etcd-upgrade Default: truePerform the upgrade of etcd.-f, --forceForce upgrading although some requirements might not be met. This also implies non-interactive mode.-h, --helphelp for apply--ignore-preflight-errors stringsA 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 stringPath 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", "kubeletconfiguration", "corednsdeployment". "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-configSpecifies whether the configuration file that will be used in the upgrade should be printed or not.--skip-phases stringsList of phases to be skipped-y, --yesPerform the upgrade and do not prompt for confirmation (non-interactive mode).Options inherited from parent commands--rootfs stringThe path to the 'real' host root filesystem. This will cause kubeadm to chroot into the provided path.kubeadm upgrade diffSynopsisShow what differences would be applied to existing static pod manifests. See also: kubeadm upgrade apply --dry-runkubeadm upgrade diff [version] [flags] Options--config stringPath to a kubeadm configuration file.-c, --context-lines int Default: 3How many lines of context in the diff-h, --helphelp 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.Options inherited from parent commands--rootfs stringThe path to the 'real' host root filesystem. This will cause kubeadm to chroot into the provided path.kubeadm upgrade nodeSynopsisUpgrade commands for a node in the clusterThe "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 addon Upgrade the default kubeadm addons /coredns Upgrade the CoreDNS addon /kube-proxy Upgrade the kube-proxy addon post-upgrade Run post upgrade tasks kubeadm upgrade node [flags] Options--certificate-renewal Default: truePerform the renewal of certificates used by component changed during upgrades.--config stringPath to a kubeadm configuration file.--dry-runDo not change any state, just output the actions that would be performed.--etcd-upgrade Default: truePerform the upgrade of etcd.-h, --helphelp for node--ignore-preflight-errors stringsA 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 stringPath 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", "kubeletconfiguration", "corednsdeployment". "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 stringsList of phases to be skippedOptions inherited from parent commands--rootfs stringThe path to the 'real' host root filesystem. This will cause kubeadm to chroot into the provided path.What's nextkubeadm config if you initialized your cluster using kubeadm v1.7.x or lower, to configure your cluster for kubeadm upgrade