# Upgrade A Cluster

Upgrade A ClusterThis page provides an overview of the steps you should follow to upgrade a Kubernetes cluster.The Kubernetes project recommends upgrading to the latest patch releases promptly, and to ensure that you are running a supported minor release of Kubernetes. Following this recommendation helps you to stay secure.The way that you upgrade a cluster depends on how you initially deployed it and on any subsequent changes.At a high level, the steps you perform are:Upgrade the control planeUpgrade the nodes in your clusterUpgrade clients such as kubectlAdjust manifests and other resources based on the API changes that accompany the new Kubernetes versionBefore you beginYou must have an existing cluster. This page is about upgrading from Kubernetes 1.33 to Kubernetes 1.34. If your cluster is not currently running Kubernetes 1.33 then please check the documentation for the version of Kubernetes that you plan to upgrade to.Upgrade approacheskubeadmIf your cluster was deployed using the kubeadm tool, refer to Upgrading kubeadm clusters for detailed information on how to upgrade the cluster.Once you have upgraded the cluster, remember to install the latest version of kubectl.Manual deploymentsCaution:These steps do not account for third-party extensions such as network and storage plugins.You should manually update the control plane following this sequence:etcd (all instances)kube-apiserver (all control plane hosts)kube-controller-managerkube-schedulercloud controller manager, if you use oneAt this point you should install the latest version of kubectl.For each node in your cluster, drain that node and then either replace it with a new node that uses the 1.34 kubelet, or upgrade the kubelet on that node and bring the node back into service.Caution:Draining nodes before upgrading kubelet ensures that pods are re-admitted and containers are re-created, which may be necessary to resolve some security issues or other important bugs.Other deploymentsRefer to the documentation for your cluster deployment tool to learn the recommended set up steps for maintenance.Post-upgrade tasksSwitch your cluster's storage API versionThe objects that are serialized into etcd for a cluster's internal representation of the Kubernetes resources active in the cluster are written using a particular version of the API.When the supported API changes, these objects may need to be rewritten in the newer API. Failure to do this will eventually result in resources that are no longer decodable or usable by the Kubernetes API server.For each affected object, fetch it using the latest supported API and then write it back also using the latest supported API.Update manifestsUpgrading to a new Kubernetes version can provide new APIs.You can use kubectl convert command to convert manifests between different API versions. For example:kubectl convert -f pod.yaml --output-version v1 The kubectl tool replaces the contents of pod.yaml with a manifest that sets kind to Pod (unchanged), but with a revised apiVersion.Device PluginsIf your cluster is running device plugins and the node needs to be upgraded to a Kubernetes release with a newer device plugin API version, device plugins must be upgraded to support both version before the node is upgraded in order to guarantee that device allocations continue to complete successfully during the upgrade.Refer to API compatibility and Kubelet Device Manager API Versions for more details.