<p>I have production stage hosted in Google Kubernetes Engine with Kubernetes version <code>1.12.9-gke.15</code>.</p>

<p>My team is planning to upgrade it to Kubernetes version <code>1.13.11-gke.5</code>.</p>

<p>A capture of list of Kubernetes version</p>

<p><img src="https://i.stack.imgur.com/CFv4K.png" alt="picture"></p>

<p>I have read some articles to upgrade Kubernetes. However, they use kubeadm not GKE.</p>

<p><a href="https://stackoverflow.com/questions/56993243/how-to-update-api-versions-list-in-kubernetes">How to update api versions list in Kubernetes</a> here's a example that use GKE.</p>

<p>If you guys have experience in upgrading kubernetes cluster in GKE or even kubeadm. Please share what should i do before upgrading the version ?</p>

<p>Should i upgrade the version to 1.13.7-gke.24 and then to 1.13.9-gke.3 and so on ?</p>

Nicky Puff
<p>You first should check if you are not using any depreciated features. For example check the Changelogs for version <a href="https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.12.md" rel="nofollow noreferrer">1.12</a> and <a href="https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.13.md" rel="nofollow noreferrer">1.13</a> to make sure you won't loose any functionality after the upgrade.</p>

<p>You will have to remember that if you have just one master node you will loose access to if for few minutes while control plane is being updated. After master node is set then worker nodes will follow.</p>

<p>There is a great post about <a href="https://cloud.google.com/blog/products/gcp/kubernetes-best-practices-upgrading-your-clusters-with-zero-downtime" rel="nofollow noreferrer">Kubernetes best practices: upgrading your clusters with zero downtime</a>, which talks about location for nodes and a beta option being <code>Regional</code></p>

<blockquote>
  <p>When creating your cluster, be sure to select the “regional” option:</p>
  
  <p>And that’s it! Kubernetes Engine automatically creates your nodes and masters in three zones, with the masters behind a load-balanced IP address, so the Kubernetes API will continue to work during an upgrade.</p>
</blockquote>

<p>And they explain how does Rolling update works and how to do them.</p>

<p>Also you might consider familiarizing yourself with documentation for <a href="https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-upgrades" rel="nofollow noreferrer">Cluster upgrades</a>, as it discusses how automatic and manual upgrades work on GKE.</p>

<p>As you can see from your current version <code>1.12.9-gke.15</code> you cannot upgrade to  <code>1.14.6-gke.1</code>. You will need to upgrade to <code>1.13.11-gke.5</code> and once this is done you will be able to upgrade to latest GKE version.</p>
